#include "teatr.h"
#include "message.h"
#include <bits/stdc++.h>
#define pb push_back
using namespace std;
typedef long long ll;
/*
vector<int> in = {5, 2, 4, 4, 3};
int GetElement(int i) {
return in[i];
}
int GetN() {
return in.size();
}*/
ll cnt = 0;
void mergesort(vector<int> &v, int L, int R) {
if (L >= R) return;
int M = (L+R) / 2;
mergesort(v, L, M);
mergesort(v, M+1, R);
int a = L;
int b = M+1;
vector<int> v2;
while(a <= M && b <= R) {
if(v[a] <= v[b]) {
v2.pb(v[a]);
a++;
}
else {
v2.pb(v[b]);
b++;
cnt += (M - a + 1);
}
}
while(a <= M) v2.pb(v[a++]);
while(b <= R) v2.pb(v[b++]);
for(int i = 0; i < v2.size(); i++) v[i+L] = v2[i];
}
int main(){
ios_base::sync_with_stdio(0);
if (MyNodeId() == 0) {
int n = GetN();
vector<int> v(n);
for (int i = 0; i < n; i++) {
v[i] = GetElement(i);
}
mergesort(v, 0, n - 1);
cout << cnt;
}
}
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 "teatr.h" #include "message.h" #include <bits/stdc++.h> #define pb push_back using namespace std; typedef long long ll; /* vector<int> in = {5, 2, 4, 4, 3}; int GetElement(int i) { return in[i]; } int GetN() { return in.size(); }*/ ll cnt = 0; void mergesort(vector<int> &v, int L, int R) { if (L >= R) return; int M = (L+R) / 2; mergesort(v, L, M); mergesort(v, M+1, R); int a = L; int b = M+1; vector<int> v2; while(a <= M && b <= R) { if(v[a] <= v[b]) { v2.pb(v[a]); a++; } else { v2.pb(v[b]); b++; cnt += (M - a + 1); } } while(a <= M) v2.pb(v[a++]); while(b <= R) v2.pb(v[b++]); for(int i = 0; i < v2.size(); i++) v[i+L] = v2[i]; } int main(){ ios_base::sync_with_stdio(0); if (MyNodeId() == 0) { int n = GetN(); vector<int> v(n); for (int i = 0; i < n; i++) { v[i] = GetElement(i); } mergesort(v, 0, n - 1); cout << cnt; } } |
English