#include "teatr.h" #include "message.h" #include "bits/stdc++.h" #include<iostream> #include<vector> #include<algorithm> using namespace std; long long g=0; int tab[100000]; int p[100000]; void bubble(int n) { for(int i=0;i<n;i++) for(int j=1;j<n-i;j++) if(tab[j-1]<tab[j]){ swap(tab[j-1], tab[j]); g++; } } void merget (int left ,int srodek, int right) { int i1,i2,i; for ( i=left; i<=right; i++) p[i]=tab[i]; i1=left; i2=srodek+1; int k=left; for( i = left; i <= right; i++) { if(i2 <=right && i1<=srodek) { if(p[i1] <= p[i2]){ tab[k++]=p[i1++]; } else { tab[k++]=p[i2++]; g+=(srodek-i1)+1; } } } for(int i=i1 ; i<=srodek ; i++,k++) tab[k]=p[i]; } void mergesort (int left , int right) { int srodek; if (left<right) { srodek=(left+right)/2; mergesort(left, srodek); mergesort(srodek+1, right); merget(left, srodek, right); } } int main() { int d=MyNodeId(); if(d==0) { int n=GetN(); for(int i=0 ; i<n ; i++) { int h=GetElement(i); tab[i]=h; } // if(n<=1000) bubble(n); // else //{ mergesort(0,n-1); // } /* for (int i=0; i<n; i++) { if (tab[i]<tab[i+1]) { swap(tab[i],tab[i+1]); g++; } } */ if(g<0)g=0; // for(int i=0; i<n ; i++) //{ // cout<<tab[i]<<" "; // } //cout<<endl; cout<<g<<endl; g=0; } 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 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 | #include "teatr.h" #include "message.h" #include "bits/stdc++.h" #include<iostream> #include<vector> #include<algorithm> using namespace std; long long g=0; int tab[100000]; int p[100000]; void bubble(int n) { for(int i=0;i<n;i++) for(int j=1;j<n-i;j++) if(tab[j-1]<tab[j]){ swap(tab[j-1], tab[j]); g++; } } void merget (int left ,int srodek, int right) { int i1,i2,i; for ( i=left; i<=right; i++) p[i]=tab[i]; i1=left; i2=srodek+1; int k=left; for( i = left; i <= right; i++) { if(i2 <=right && i1<=srodek) { if(p[i1] <= p[i2]){ tab[k++]=p[i1++]; } else { tab[k++]=p[i2++]; g+=(srodek-i1)+1; } } } for(int i=i1 ; i<=srodek ; i++,k++) tab[k]=p[i]; } void mergesort (int left , int right) { int srodek; if (left<right) { srodek=(left+right)/2; mergesort(left, srodek); mergesort(srodek+1, right); merget(left, srodek, right); } } int main() { int d=MyNodeId(); if(d==0) { int n=GetN(); for(int i=0 ; i<n ; i++) { int h=GetElement(i); tab[i]=h; } // if(n<=1000) bubble(n); // else //{ mergesort(0,n-1); // } /* for (int i=0; i<n; i++) { if (tab[i]<tab[i+1]) { swap(tab[i],tab[i+1]); g++; } } */ if(g<0)g=0; // for(int i=0; i<n ; i++) //{ // cout<<tab[i]<<" "; // } //cout<<endl; cout<<g<<endl; g=0; } return 0; } |