1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include<bits/stdc++.h>
#include "message.h"
#include "teatr.h"
using namespace std;

long long int n,k,i,r=1,w,p,tab[2200007];
void insert(long long int x, long long int pp, long long int pk, long long int zp, long long int zk)
{
	long long int sr=(pp+pk)/2;
	if(pk < zp || pp > zk)
	{
		return;
	}
	if(pp >= zp && pk <= zk)
	{
		tab[x]++;
		return;
	}
	insert(2*x, pp, sr, zp, zk);
	insert(2*x+1, sr+1, pk, zp, zk);
}
long long int query(long long int x)
{
	long long int res=0;
	while(x > 0)
	{
//		printf("TEST tab[%lld]=%lld;\n", x, tab[x]);
		res+=tab[x];
		x/=2;
	}
	return res;
}
int main()
{
	if(MyNodeId() == 0)
	{
//		scanf("%lld", &n);
		n=GetN();
		while(r < n)
		{
			r*=2;
		}
		for(i=0; i<n; i++)
		{
//			scanf("%lld", &k);
			k=GetElement(i);
			w+=query(k+r-1);
			insert(1, 1, r, 1, k-1);
		}
	//	for(i=1; i<2*r; i++)
	//	{
	//		printf("%lld ", tab[i]);
	//	}
		printf("%lld", w);
		return 0;
	}
}