Cod sursa(job #1238639)

Utilizator RaileanuCristian Raileanu Raileanu Data 7 octombrie 2014 13:47:39
Problema Sortare prin comparare Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <fstream>
#include<algorithm>
using namespace std;
#define MX 500000
ifstream f1("algsort.in");
ofstream f2("algsort.out");
int n, a[MX], i;

void interclas(int st, int dr, int m)
{
    int d[MX], i=st, j=m+1,k=st;
    while (i<=m && j<=dr )
        if (a[i]<=a[j] ) d[k++]=a[i++];
            else d[k++]=a[j++];

    while (i<=m) d[k++]=a[i++];
    while (j<=dr) d[k++]=a[j++];
    for (i=st; i<=dr; i++)
        a[i]=d[i];
}

void mergesort(int st, int dr)
{
    if (st>=dr) return;

    int m= (st+dr)/2;
    mergesort(st,m);
    mergesort(m+1,dr);
    interclas(st,dr,m);
}

int main()
{
    f1>>n;
    for (i=1;i<=n;i++)
        f1>>a[i];

    sort(a+1,a+n+1);
    for (i=1; i<=n; i++)
        f2<<a[i]<<" ";

    return 0;
}