Cod sursa(job #2054092)

Utilizator alexilasiAlex Ilasi alexilasi Data 1 noiembrie 2017 18:21:19
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <fstream>

using namespace std;

ifstream fin("algsort.in");
ofstream fout("algsort.out");

int n,a[500010],ans,v[500010];

void my_merge(int l,int m,int r)
{
    int x1=l,x2=m+1,h=0;
    while(x1<=m&&x2<=r)
    {
        if(a[x1]<a[x2])
            v[h++]=a[x1++];
        else
        {
            v[h++]=a[x2++];
            ans=(ans+m-x1+1)%9917;
        }
    }
    while(x1<=m)
        v[h++]=a[x1++];
    while(x2<=r)
        v[h++]=a[x2++];
    for(x1=l;x1<=r;x1++)
        a[x1]=v[x1-l];
}

void merge_sort(int l,int r)
{
    if(l<r)
    {
        int m=l+(r-l)/2;
        merge_sort(l,m);
        merge_sort(m+1,r);
        my_merge(l,m,r);
    }
}

int main()
{
    int i;
    fin>>n;
    for(i=0;i<n;i++)
        fin>>a[i];
    merge_sort(0,n-1);
    for(i=0;i<n;i++)
        fout<<a[i]<<" ";
    return 0;
}