Task: | Mega Inversions |
Sender: | Semikolonisti |
Submission time: | 2017-10-03 16:45:05 +0300 |
Language: | C++ |
Status: | READY |
Result: | ACCEPTED |
test | verdict | time | |
---|---|---|---|
#1 | ACCEPTED | 0.45 s | details |
#2 | ACCEPTED | 0.56 s | details |
#3 | ACCEPTED | 0.49 s | details |
#4 | ACCEPTED | 0.49 s | details |
#5 | ACCEPTED | 0.47 s | details |
#6 | ACCEPTED | 0.47 s | details |
#7 | ACCEPTED | 0.54 s | details |
#8 | ACCEPTED | 0.51 s | details |
#9 | ACCEPTED | 0.45 s | details |
#10 | ACCEPTED | 0.46 s | details |
#11 | ACCEPTED | 0.05 s | details |
#12 | ACCEPTED | 0.12 s | details |
#13 | ACCEPTED | 0.10 s | details |
#14 | ACCEPTED | 0.13 s | details |
#15 | ACCEPTED | 0.12 s | details |
#16 | ACCEPTED | 0.12 s | details |
#17 | ACCEPTED | 0.10 s | details |
#18 | ACCEPTED | 0.04 s | details |
Code
#include <bits/stdc++.h> #define ll long long #define N (1<<19) using namespace std; ll v[2 * N]; void inc (int k, ll n) { k += N; v[k] += n; for (k /= 2; k >= 1; k /= 2) v[k] = v[2 * k] + v[2 * k + 1]; } ll sum (int a) { int b = 500000; ll s = 0; a += N; b += N; while (a <= b) { if (a & 1) s += v[a++]; if (~b & 1) s += v[b--]; a /= 2; b /= 2; } return s; } ll v2[2 * N]; void inc2 (int k, ll n) { k += N; v2[k] += n; for (k /= 2; k >= 1; k /= 2) v2[k] = v2[2 * k] + v2[2 * k + 1]; } ll sum2 (int a) { ll s = 0; int b = 500000; a += N; b += N; while (a <= b) { if (a & 1) s += v2[a++]; if (~b & 1) s += v2[b--]; a /= 2; b /= 2; } return s; } int main () { int n; cin>>n; ll ans = 0; for (int i = 1; i <= n; i++) { ll x; cin>>x; ans += sum2(x + 1); inc2(x, sum(x + 1)); inc(x, 1); } cout<<ans<<endl; }
Test details
Test 1
Verdict: ACCEPTED
input |
---|
500000 289384 430887 192778 136916 24... |
correct output |
---|
3462273770285851 |
user output |
---|
3462273770285851 |
Test 2
Verdict: ACCEPTED
input |
---|
500000 382213 21639 220700 75692 3046... |
correct output |
---|
3485180959426295 |
user output |
---|
3485180959426295 |
Test 3
Verdict: ACCEPTED
input |
---|
500000 126690 371364 446885 348594 13... |
correct output |
---|
3477492420887556 |
user output |
---|
3477492420887556 |
Test 4
Verdict: ACCEPTED
input |
---|
500000 42662 481114 312377 69861 7962... |
correct output |
---|
3475393752560785 |
user output |
---|
3475393752560785 |
Test 5
Verdict: ACCEPTED
input |
---|
500000 87517 398064 349297 387923 451... |
correct output |
---|
3471906656975056 |
user output |
---|
3471906656975056 |
Test 6
Verdict: ACCEPTED
input |
---|
500000 32451 250738 273961 357671 137... |
correct output |
---|
3460754378741711 |
user output |
---|
3460754378741711 |
Test 7
Verdict: ACCEPTED
input |
---|
500000 90672 310026 72922 224011 3703... |
correct output |
---|
3476018102026120 |
user output |
---|
3476018102026120 |
Test 8
Verdict: ACCEPTED
input |
---|
500000 425377 326433 228759 266715 81... |
correct output |
---|
3465242936420874 |
user output |
---|
3465242936420874 |
Test 9
Verdict: ACCEPTED
input |
---|
500000 23470 483991 430548 458582 278... |
correct output |
---|
3470073617672348 |
user output |
---|
3470073617672348 |
Test 10
Verdict: ACCEPTED
input |
---|
500000 369724 122728 326689 334480 34... |
correct output |
---|
3474985893406401 |
user output |
---|
3474985893406401 |
Test 11
Verdict: ACCEPTED
input |
---|
10000 605 9123 24 8124 4758 1782 975... |
correct output |
---|
27409866438 |
user output |
---|
27409866438 |
Test 12
Verdict: ACCEPTED
input |
---|
100000 42 18468 6335 26501 19170 1572... |
correct output |
---|
27944091731907 |
user output |
---|
27944091731907 |
Test 13
Verdict: ACCEPTED
input |
---|
100000 1 2 3 4 5 6 7 8 9 10 11 12 13 ... |
correct output |
---|
0 |
user output |
---|
0 |
Test 14
Verdict: ACCEPTED
input |
---|
99999 99999 99998 99997 99996 99995 ... |
correct output |
---|
166656666849999 |
user output |
---|
166656666849999 |
Test 15
Verdict: ACCEPTED
input |
---|
99998 2 1 4 3 6 5 8 7 10 9 12 11 14 ... |
correct output |
---|
49997 |
user output |
---|
49997 |
Test 16
Verdict: ACCEPTED
input |
---|
99997 1 99995 99996 99993 99994 9999... |
correct output |
---|
166636668399968 |
user output |
---|
166636668399968 |
Test 17
Verdict: ACCEPTED
input |
---|
100000 32769 32763 32774 32764 32761 ... |
correct output |
---|
5672756782663 |
user output |
---|
5672756782663 |
Test 18
Verdict: ACCEPTED
input |
---|
10 10 10 10 10 10 10 10 10 10 9 |
correct output |
---|
0 |
user output |
---|
0 |