Cod sursa(job #792463)

Utilizator SpiriFlaviuBerbecariu Flaviu SpiriFlaviu Data 27 septembrie 2012 12:46:38
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <fstream>

using namespace std;

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

int a[500001],c[500001];
void inter( int s, int m, int d)
{
    int k=1;
    int i=s, j=m+1;
    while(i<=m && j<=d)
    {
        if(a[i]<a[j])
            c[k++]=a[i++];
        else c[k++]=a[j++];
    }
    while(i<=m)
        c[k++] = a[i++];
    while(j<=d)
        c[k++] = a[j++];
    k=1;
    for(i=s;i<=d;i++)
        a[i]=c[k++];
}

void ms( int s, int d)
{
    if(s<d)
    {
        int m=(s+d)/2;
        ms(m+1,d);
        ms(s,m);
        inter(s,m,d);
    }
}

int main()
{

    int n;
    fin>>n;
    for(int i=1;i<=n;i++)
        fin>>a[i];
    ms(1,n);
    for(int i=1;i<=n;i++)
        fout<<a[i]<<' ';
    fin.close();
    fout.close();
    return 0;
}