CSES - KILO 2017 5/5 - Results
Submission details
Task:Mega Inversions
Sender:Ke Bi
Submission time:2017-10-03 16:36:39 +0300
Language:C++
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.23 sdetails
#2ACCEPTED0.20 sdetails
#3ACCEPTED0.17 sdetails
#4ACCEPTED0.19 sdetails
#5ACCEPTED0.23 sdetails
#6ACCEPTED0.17 sdetails
#7ACCEPTED0.15 sdetails
#8ACCEPTED0.22 sdetails
#9ACCEPTED0.18 sdetails
#10ACCEPTED0.22 sdetails
#11ACCEPTED0.05 sdetails
#12ACCEPTED0.08 sdetails
#13ACCEPTED0.07 sdetails
#14ACCEPTED0.05 sdetails
#15ACCEPTED0.04 sdetails
#16ACCEPTED0.06 sdetails
#17ACCEPTED0.05 sdetails
#18ACCEPTED0.04 sdetails

Compiler report

input/code.cpp: In function 'int main()':
input/code.cpp:20:17: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d", &n);
                 ^
input/code.cpp:24:18: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d", &x);
                  ^

Code

#include <bits/stdc++.h>
using namespace std;
int n;
long long c[500020];
long long d[500020];
void R(long long c[], int x, long long y) {
	for (; x <= n; x += x & -x) {
		c[x] += y;
	}
}
long long G(long long c[], int x) {
	long long re = 0;
	for (; x; x -= x & -x) {
		re += c[x];
	}
	return re;
}

int main() {
	scanf("%d", &n);
	long long ans = 0;
	for (int i = 0; i < n; i++) {
		int x;
		scanf("%d", &x);
		ans += G(d, n) - G(d, x);
		R(d, x, G(c, n) - G(c, x));
		R(c, x, 1);
	}
	printf("%lld\n", ans);
	return 0;
}

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