Pagini recente » Cod sursa (job #274783) | Cod sursa (job #2392171) | Cod sursa (job #1275228) | Cod sursa (job #2456788) | Cod sursa (job #2669134)
#include <fstream>
using namespace std;
ifstream in("inv.in");
ofstream out("inv.out");
long a[100001];
int n,nrinv,i;
long rez;
void div(long a[], int st, int dr)
{
if(st < dr)
{
int mij =(st + dr)/2;
div(a,st,mij);
div(a,mij+1,dr);
int k=0,i=st,j=mij+1,b[100001],nr=0;
while (i <= mij && j<=dr)
if(a[i]<=a[j])
{
b[k]=a[i];
k++;
i++;
rez+=nr;
}
else
{
b[k]=a[j];
k++;
j++;
nr++;
}
while(i<=mij)
{
b[k]=a[i];
k++;
i++;
rez+=nr;
}
while(j<=dr)
{
b[k]=a[j];
k++;
j++;
}
for(i=st; i<=dr; i++)
{
a[i]=b[i-st];
}
}
}
int main()
{
in>>n;
for( i=1; i<=n; i++)
{
in>>a[i];
}
div(a,1,n);
out<<rez%9917;
}