Cod sursa(job #2065363)

Utilizator IordachescuAncaFMI Iordachescu Anca Mihaela IordachescuAnca Data 13 noiembrie 2017 18:48:31
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.12 kb
#include<fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
void ic(int a[], int aux[],int p, int q, int r)
{
    int i,j,k;
    i=p;
    j=1+q;
    k=0;
    while(i<=q&&j<=r)
    {
        if(a[i]<a[j])
        {
            k++;
            aux[k]=a[i];
            i++;
        }
        else
        {
            k++;
            aux[k]=a[j];
            j++;
        }
    }
    while(i<=q)
    {
        k++;
        aux[k]=a[i];
        i++;
    }
    while(j<=r)
    {
        k++;
        aux[k]=a[j];
        j++;
    }
    k=0;
    i=p;
    while(i<=r)
    {
        k++;
        a[i]=aux[k];
        i++;
    }
}
void mg(int a[],int aux[], int p,int r)
{
    int q;
    if(p<r)
    {
        q=(p+r)/2;
        mg(a,aux,p,q);
        mg(a,aux,q+1,r);
        ic(a,aux,p,q,r);
    }
}
int n,a[500002],i,aux[500002];
int main()
{
    fin>>n;
    for(i=1;i<=n;i++)
    {
        fin>>a[i];
    }
    mg(a,aux,1,n);
    for(i=1;i<=n;i++)
    {
        fout<<a[i]<<" ";
    }
    fin.close();
    fout.close();
    return 0;
}