Cod sursa(job #2669134)

Utilizator andreitabaraandrei2004 andreitabara Data 6 noiembrie 2020 10:39:55
Problema Datorii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.1 kb
#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;
}