CSES - KILO 2016 2/5 - Results
Submission details
Task:Invert
Sender:trukilla hissikuiluun
Submission time:2016-09-13 17:26:02 +0300
Language:C++
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.09 sdetails
#2ACCEPTED0.27 sdetails
#3ACCEPTED0.17 sdetails
#4ACCEPTED0.26 sdetails
#5ACCEPTED0.21 sdetails
#6ACCEPTED0.23 sdetails
#7ACCEPTED0.05 sdetails
#8ACCEPTED0.26 sdetails
#9ACCEPTED0.07 sdetails
#10ACCEPTED0.27 sdetails
#11ACCEPTED0.18 sdetails
#12ACCEPTED0.21 sdetails
#13ACCEPTED0.10 sdetails
#14ACCEPTED0.26 sdetails
#15ACCEPTED0.17 sdetails
#16ACCEPTED0.26 sdetails
#17ACCEPTED0.21 sdetails
#18ACCEPTED0.24 sdetails
#19ACCEPTED0.21 sdetails
#20ACCEPTED0.27 sdetails

Compiler report

input/code.cpp: In function 'int main()':
input/code.cpp:48:9: warning: unused variable 'maximum' [-Wunused-variable]
     int maximum = 1;
         ^
input/code.cpp:49:9: warning: unused variable 'minimum' [-Wunused-variable]
     int minimum = 1;
         ^

Code

#include <iostream>
using namespace std;

int arr[400005];
int q;
const int n = 100001;

void update(int idx, int l, int r, int v)
{
    if (l == r)
    {
        arr[idx]+=1;
        return;
    }
    int mid = (l+r)/2;
    if (v <= mid)
    {
        update(idx*2, l, mid, v);
    }
    else
    {
        update(idx*2+1, mid+1, r, v);
    }
    arr[idx] = arr[idx*2]+arr[idx*2+1];
}

int sum(int idx, int l, int r, int from, int to)
{
    if (from > to) return 0;
    if (l == from && r == to) return arr[idx];
    int mid = (l+r)/2;
    if (to <= mid)
    {
        return sum(idx*2, l, mid, from, to);
    }
    else if(from > mid)
    {
        return sum(idx*2+1, mid+1, r, from, to);
    }
    return sum(idx*2,l,mid, from, mid) + sum(idx*2+1,mid+1,r, mid+1,to);
}

int main()
{
    cin.sync_with_stdio(0);
    cin >> q;
    long long ans = 0;
    int maximum = 1;
    int minimum = 1;
    for (int i = 0; i < q; ++i)
    {
        int a,b;
        cin >> a;
        if ( a == 1)
        {
            cin >> b;
            update(1,1,n,b);
            int t = sum(1, 1, n, b+1, n);
            ans += t;
        }
        else if (a == 2)
        {
            cin >> b;
            update(1,1,n,b);
            int t = sum(1, 1, n, 1, b-1);
            ans += t;
        }
        else if (a == 3)
        {
            ans = 0;
        }
        else if (a ==4)
        {
            cout << ans << endl;
        }

    }
    return 0;
}

Test details

Test 1

Verdict: ACCEPTED

input
116682
2 16788
1 18822
1 33396
2 69805
...

correct output
2718
19980
51212
68871
108108
...

user output
2718
19980
51212
68871
108108
...

Test 2

Verdict: ACCEPTED

input
500000
2 98355
2 60191
1 725
2 44093
...

correct output
4591136
513858069
2568146952
3245381276
3834167771
...

user output
4591136
513858069
2568146952
3245381276
3834167771
...

Test 3

Verdict: ACCEPTED

input
279091
1 1715
2 67456
3
4
...

correct output
0
7
8
8
10
...

user output
0
7
8
8
10
...

Test 4

Verdict: ACCEPTED

input
500000
2 61543
1 60828
1 50355
1 40328
...

correct output
68875
35642
76306
9043
53444
...

user output
68875
35642
76306
9043
53444
...

Test 5

Verdict: ACCEPTED

input
401545
1 20583
1 54459
2 5060
2 18660
...

correct output
7135104
67093970
87978149
240022409
353132099
...

user output
7135104
67093970
87978149
240022409
353132099
...

Test 6

Verdict: ACCEPTED

input
500000
2 41157
2 37822
2 72091
3
...

correct output
2
2
2
2
5
...

user output
2
2
2
2
5
...

Test 7

Verdict: ACCEPTED

input
10079
2 52135
1 5407
2 94
1 37058
...

correct output
158419
6571
89379
171235
7854
...

user output
158419
6571
89379
171235
7854
...

Test 8

Verdict: ACCEPTED

input
500000
1 83689
1 70194
1 17167
2 52286
...

correct output
16433238
99620800
142458990
274873638
411495712
...

user output
16433238
99620800
142458990
274873638
411495712
...

Test 9

Verdict: ACCEPTED

input
90533
2 34119
4
3
3
...

correct output
0
0
16
27
0
...

user output
0
0
16
27
0
...

Test 10

Verdict: ACCEPTED

input
500000
2 63136
2 11519
1 91986
1 92054
...

correct output
191
11103
16624
90718
101186
...

user output
191
11103
16624
90718
101186
...

Test 11

Verdict: ACCEPTED

input
323662
1 18238
1 62832
1 53482
1 43447
...

correct output
158283253
677654483
1023537391
121975751
144502380
...

user output
158283253
677654483
1023537391
121975751
144502380
...

Test 12

Verdict: ACCEPTED

input
500000
1 11725
4
1 99988
1 88696
...

correct output
0
21
0
0
0
...

user output
0
21
0
0
0
...

Test 13

Verdict: ACCEPTED

input
125498
1 65018
1 41218
2 93534
2 78789
...

correct output
41
1213
49209
27631
56275
...

user output
41
1213
49209
27631
56275
...

Test 14

Verdict: ACCEPTED

input
500000
2 22435
2 98738
1 57359
2 77794
...

correct output
5948069
17495286
58672750
137825207
482842950
...

user output
5948069
17495286
58672750
137825207
482842950
...

Test 15

Verdict: ACCEPTED

input
343000
1 14035
3
1 36003
2 2676
...

correct output
0
0
0
0
0
...

user output
0
0
0
0
0
...

Test 16

Verdict: ACCEPTED

input
500000
2 67715
2 16062
1 12953
2 43464
...

correct output
14302
25179
21705
13316
26515
...

user output
14302
25179
21705
13316
26515
...

Test 17

Verdict: ACCEPTED

input
372731
1 16333
1 58828
2 1790
2 56950
...

correct output
23264093
180691208
58859618
1007439070
357775222
...

user output
23264093
180691208
58859618
1007439070
357775222
...

Test 18

Verdict: ACCEPTED

input
500000
1 24800
1 30022
3
3
...

correct output
0
0
2
0
7
...

user output
0
0
2
0
7
...

Test 19

Verdict: ACCEPTED

input
398012
1 7709
1 12219
1 95709
1 75173
...

correct output
1733
3398
7720
34986
79727
...

user output
1733
3398
7720
34986
79727
...

Test 20

Verdict: ACCEPTED

input
500000
1 97423
2 25928
1 85082
2 35253
...

correct output
92435834
311688637
486359207
492535988
540678377
...

user output
92435834
311688637
486359207
492535988
540678377
...