#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define FILL(a,b) fill(a,a+(sizeof(a)/sizeof(a[0])),b) #define FOR(a,b,c) for(int a=b; a<=c; a++) #define DOWNFOR(a,b,c) for(int a=b; a>=c; a--) #define SIZEOF(a) (sizeof(a)/sizeof(a[0])) #define FORARR(i,a) for(unsigned i=0; ia[e]){ int x = a[s]; a[s]=a[e]; a[e]=x; return 1; } else{ return 0; } } int half = (s+e)/2; long long result = countmerge(a, s, half) + countmerge(a,half+1,e); int* sorted = new int[e-s+1]; //int sorted[150010]; int posa=s, posb=half+1; FOR(i,0,e-s){ if((a[posa]>a[posb] || posa > half) && posb<=e){ //pridavame z 2 sorted[i]=a[posb++]; //cout << "z2" << endl; //cout << "plus " <>n) && n){ int a[150010],b[150010],c[150010]; FOR(i,1,n){ cin >> a[i]; } FOR(i,1,n){ cin >> b[i]; } FOR(i,1,n) cin >> c[i]; long long inversions=0; inversions += countinv(a,b,n); // cout << inversions; inversions += countinv(a,c,n); //cout << inversions; inversions += countinv(b,c,n); //cout << inversions; //cout << (inversions/2)<