Pagini recente » Cod sursa (job #2157013) | Cod sursa (job #912577) | Cod sursa (job #2537242) | Cod sursa (job #3199608) | Cod sursa (job #2195761)
#include <stdio.h>
#include <stdlib.h>
//void ic(int st, int dr);
int v[100002], aux[100002];
/*void dei(int st, int dr){
int m, x;
if(st==dr)
return;
m=(st+dr)/2;
dei(st, m);
dei(m+1, dr);
x=ic(st, dr);
}*/
int ic(int st, int dr){
int m, i, j, k, r=0;
m=(st+dr)/2;
i=st;
k=st;
j=m+1;
while(i<=m && j<=dr){
if(v[i]<=v[j])
aux[k++]=v[i++];
else{
aux[k++]=v[j++];
r+=m-i+1;
}
}
while(i<=m)
aux[k++]=v[i++];
while(j<=dr)
aux[k++]=v[j++];
for(k=st;k<=dr;k++)
v[k]=aux[k];
return r%9917;
}
int nrinv(int st, int dr){
int m, r=0;
if(st==dr)
return 0;
m=(st+dr)/2;
r+=nrinv(st, m);
r+=nrinv(m+1, dr);
r+=ic(st, dr);
return r%9917;
}
int main(){
FILE *fin, *fout;
int n, i;
fin=fopen("algsort.in", "r");
fout=fopen("algsort.out", "w");
fscanf(fin, "%d", &n);
for(i=0;i<n;i++)
fscanf(fin, "%d", &v[i]);
fprintf(fout, "%d ", nrinv(0, n-1));
fclose(fin);
fclose(fout);
return 0;
}