Pagini recente » Cod sursa (job #20638) | Cod sursa (job #3222339) | Cod sursa (job #325162) | Cod sursa (job #2666313) | Cod sursa (job #1315477)
#include <iostream>
#include<fstream>
using namespace std;
int a[100010],b[100010],n,sol;
void Interclasare(int p, int m, int q)
{
int i,j,k=0;
i = p;
j = m + 1;
while(i<=m && j<=q)
if(a[i] <= a[j])
b[++k] = a[i++];
else
{
b[++k] = a[j++];
sol+=(m-i+1);
sol%=9917;
}
while(i<=m)
b[++k] = a[i++];
while(j<=q)
b[++k] = a[j++];
for(i=1, j=p; i<=k; i++)
a[j++] = b[i];
}
void MergeSort(int p, int q)
{
int m;
if(p<q)
{
m = (p + q) / 2;
MergeSort(p, m);
MergeSort(m+1, q);
Interclasare(p, m, q);
}
}
void citire()
{
ifstream fin("inv.in");
fin>>n;
for(int i=1;i<=n;++i)
fin>>a[i];
fin.close();
}
int main()
{
citire();
MergeSort(1,n);
ofstream fout("inv.out");
fout<<sol<<"\n";
fout.close();
return 0;
}