CSES - KILO 2016 2/5 - Results
Submission details
Task:Invert
Sender:Kyynel ;_;
Submission time:2016-09-13 16:58:41 +0300
Language:C++
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.11 sdetails
#2ACCEPTED0.40 sdetails
#3ACCEPTED0.19 sdetails
#4ACCEPTED0.40 sdetails
#5ACCEPTED0.32 sdetails
#6ACCEPTED0.32 sdetails
#7ACCEPTED0.06 sdetails
#8ACCEPTED0.40 sdetails
#9ACCEPTED0.09 sdetails
#10ACCEPTED0.40 sdetails
#11ACCEPTED0.29 sdetails
#12ACCEPTED0.32 sdetails
#13ACCEPTED0.12 sdetails
#14ACCEPTED0.39 sdetails
#15ACCEPTED0.24 sdetails
#16ACCEPTED0.40 sdetails
#17ACCEPTED0.38 sdetails
#18ACCEPTED0.33 sdetails
#19ACCEPTED0.32 sdetails
#20ACCEPTED0.41 sdetails

Code

#include <bits/stdc++.h>
#define ll long long
#define N (1<<17)

using namespace std;

ll v[2*N];
ll inv;

void val (ll k) {
  k += N;
  v[k]++;
  for (k /= 2; k >= 1; k /= 2) {
    v[k] = v[2 * k] + v[2 * k + 1];
  }
}

ll sum (ll a, ll b) {
  ll s = 0;
  a += N;
  b += N;
  while (a <= b) {
    if (a % 2 == 1) s += v[a++];
    if (b % 2 == 0) s += v[b--];
    a /= 2; b /= 2;
  }
  return s;
}

int main () {
  int n;
  cin>>n;
  for (int i = 0; i < n; i++) {
    int t;
    cin>>t;
    if (t == 1) {
      int x;
      cin>>x;
      val(x);
      inv += sum(x + 1 , 100002);
    } else if (t == 2) {
      int x;
      cin>>x;
      val(x);
      inv += sum(1, x - 1);
    } else if (t == 3) inv = 0;
    else cout<<inv<<endl;
  }
}

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
...