#include <iostream> #include "message.h" #include "teatr.h" using namespace std; int tab[1000002]; //symulacja biblioteczki /*#include <vector> #include <cassert> int wej[1000002], akt, n; void init() { cin >> n; for (int i=0; i<n; i++) { cin >> wej[i]; } } int GetN() { return n; } int GetElement(int i) { return wej[i]; }*/ /*int GetN() { return 100 * 1000 * 1000; } int GetElement(int i) { return 1 + (((long long)i * 27) + i & (i %113) + ((i % 37) ^ (i % 20)) * 3571) % 1000000; }*/ /*int MyNodeId() { return akt; } vector<long long> wiadomosci; void PutLL(int i, long long k) { wiadomosci.push_back(k); } void Send(int i){} int Receive(int i){return 1;}; long long GetLL(int i) { assert(!wiadomosci.empty()); long long a=wiadomosci.back(); if (i>0) wiadomosci.pop_back(); return a; }*/ int main() { int n=GetN(); int inst=MyNodeId(), pot=1; if (inst>30) return 0; for (int i=0; i<inst; i++) pot*=2; long long wyn=0; for (int i=0; i<n; i++) { int a=GetElement(i); a/=pot; if (a%2==1) tab[a]++; else wyn+=tab[a+1]; } //cout << wyn << "\n"; if (inst!=0) { PutLL(0, wyn); Send(0); return 0; } for (int i=1; i<=30; i++) { int blah=Receive(i); //cout << GetLL(-i) << " " << i << "\n"; wyn+=GetLL(i); } cout << wyn << "\n"; return 0; } /*int main() { //init(); for (int i=99; i>=0; i--) { for (int i=0; i<=1000000; i++) tab[i]=0; akt=i; int blah=fun(); } }*/
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 | #include <iostream> #include "message.h" #include "teatr.h" using namespace std; int tab[1000002]; //symulacja biblioteczki /*#include <vector> #include <cassert> int wej[1000002], akt, n; void init() { cin >> n; for (int i=0; i<n; i++) { cin >> wej[i]; } } int GetN() { return n; } int GetElement(int i) { return wej[i]; }*/ /*int GetN() { return 100 * 1000 * 1000; } int GetElement(int i) { return 1 + (((long long)i * 27) + i & (i %113) + ((i % 37) ^ (i % 20)) * 3571) % 1000000; }*/ /*int MyNodeId() { return akt; } vector<long long> wiadomosci; void PutLL(int i, long long k) { wiadomosci.push_back(k); } void Send(int i){} int Receive(int i){return 1;}; long long GetLL(int i) { assert(!wiadomosci.empty()); long long a=wiadomosci.back(); if (i>0) wiadomosci.pop_back(); return a; }*/ int main() { int n=GetN(); int inst=MyNodeId(), pot=1; if (inst>30) return 0; for (int i=0; i<inst; i++) pot*=2; long long wyn=0; for (int i=0; i<n; i++) { int a=GetElement(i); a/=pot; if (a%2==1) tab[a]++; else wyn+=tab[a+1]; } //cout << wyn << "\n"; if (inst!=0) { PutLL(0, wyn); Send(0); return 0; } for (int i=1; i<=30; i++) { int blah=Receive(i); //cout << GetLL(-i) << " " << i << "\n"; wyn+=GetLL(i); } cout << wyn << "\n"; return 0; } /*int main() { //init(); for (int i=99; i>=0; i--) { for (int i=0; i<=1000000; i++) tab[i]=0; akt=i; int blah=fun(); } }*/ |