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
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
#include<cstdio>
#include<algorithm>
#include "message.h"
#include "teatr.h"
using namespace std;

//const int inp[] = {5,2,4,4,3}; 

int LA[20000000],LB[20000000],_node,N;
long long PT[2000000];

int get(int pos)
{
	if(pos==0)return PT[pos];
	else return PT[pos]+get(pos-(pos&(-pos)));
}

void add(int pos)
{
	if(pos>=2000000)return;
	else PT[pos]++,add(pos+(pos&(-pos)));
}

/*int GetN()
{
	return 5;
}

int GetElement(int x)
{
	return inp[x];
}*/

int main()
{
	_node=MyNodeId();
	int ILE=13;
	N=GetN();
    if(_node==0)
	{
	   long long wyn=0;
	   for(int i=1;i<100;i++)
	   {
   	       Receive(i);
   	       long long X=GetInt(i);
   	       long long D=GetInt(i);
   	       wyn+=D*1000000000ll+X;
	   }
	   printf("%lld\n",wyn);
	}
	else
	{
		int A=0;
		int B=0;
		//mam downa nie umiem lepiej xd
		for(int i=1;i<_node;i++)
		{
			B++;
			if(B==ILE)A++,B=A;
		}
		if(A>=ILE)
		{
			PutInt(0,0);
			PutInt(0,0);
			Send(0);
			return 0;
		}
		
		int dl=N/ILE;	
		int pA=A*dl;
		int kA=(A+1)*dl-1;if(A==ILE-1)kA=N-1;
		int pB=B*dl;
		int kB=(B+1)*dl-1;if(B==ILE-1)kB=N-1;
		for(int i=0;i<=(kA-pA);i++)LA[i]=GetElement(pA+i);
		for(int i=0;i<=(kB-pB);i++)LB[i]=GetElement(pB+i);
		
		long long wyn=0;
		if(B==A)
		{
			//printf("%d %d\n",pA,kA);
			for(int i=0;i<=(kA-pA);i++)
			{
				LA[i]=1000001-LA[i];
				//printf("%d\n",LA[i]);
				wyn+=get(LA[i]-1);
				add(LA[i]);
			}
		}
		else
		{
			sort(LA,LA+kA-pA+1);
			sort(LB,LB+kB-pB+1);
			int mx=0;
			for(int i=0;i<=kB-pB;i++)
			{
				while(mx<=kA-pA&&LA[mx]<=LB[i])mx++;
				wyn+=kA-pA-mx+1;
			}
		}
		PutInt(0,wyn%1000000000);
		PutInt(0,wyn/1000000000);
		Send(0);
		//printf("%lld\n",wyn);
	}

}