#include "message.h" #include "teatr.h" #include "bits/stdc++.h" using namespace std; int wynik=0; void scal(int p, int s, int k, int t[], int tp[]) { int i,j,q; i=p; j=s+1; q=p; while(i<=s && j<=k) { if(t[i]<=t[j]) { tp[q]=t[i]; i++; } else { tp[q]=t[j]; j++; wynik+=s-i+1; } q++; } while(i<=s) { tp[q]=t[i]; i++; q++; } while(j<=k) { tp[q]=t[j]; j++; q++; } for(int x=p; x<=k; ++x) { t[x]=tp[x]; } } void msort(int p, int k, int t[], int tp[]) { if(p==k) return; int s=(p+k)/2; msort(p, s, t, tp); msort(s+1, k, t, tp); scal(p, s, k, t, tp); } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n=GetN(); int t[n+3]; int tp[n+3]; for(int i=0; i<n; ++i) { t[i]=GetElement(i); } msort(0, n-1, t, tp); cout<<wynik; return 0; }
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 | #include "message.h" #include "teatr.h" #include "bits/stdc++.h" using namespace std; int wynik=0; void scal(int p, int s, int k, int t[], int tp[]) { int i,j,q; i=p; j=s+1; q=p; while(i<=s && j<=k) { if(t[i]<=t[j]) { tp[q]=t[i]; i++; } else { tp[q]=t[j]; j++; wynik+=s-i+1; } q++; } while(i<=s) { tp[q]=t[i]; i++; q++; } while(j<=k) { tp[q]=t[j]; j++; q++; } for(int x=p; x<=k; ++x) { t[x]=tp[x]; } } void msort(int p, int k, int t[], int tp[]) { if(p==k) return; int s=(p+k)/2; msort(p, s, t, tp); msort(s+1, k, t, tp); scal(p, s, k, t, tp); } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n=GetN(); int t[n+3]; int tp[n+3]; for(int i=0; i<n; ++i) { t[i]=GetElement(i); } msort(0, n-1, t, tp); cout<<wynik; return 0; } |