Cod sursa(job #1076310)

Utilizator alabala1vali smerica alabala1 Data 10 ianuarie 2014 00:55:02
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include<iostream>
#include<fstream>
unsigned c[500000];
void merges(unsigned st, unsigned  dr, unsigned *p)
{
    if (st == dr)return;
    unsigned m = (st + dr) / 2;
    merges(st, m, p);
    merges(m + 1, dr, p);
    int j=st,i=m+1,s=0;
    while (j <= m || i <= dr)
    {
        if (j > m){ c[s++] = *(p + i++); continue; }
        if (i > dr){ c[s++] = *(p + j++); continue; }
        if (*(p + j) > *(p + i))c[s++] = *(p + i++);
        else c[s++] = *(p + j++);
    }
    for (j = st, i = 0; i < s; i++, j++)*(p + j) = c[i];}
int main()
{
    unsigned  a[500000],n;
    std::ifstream f("algsort.in");
    f >> n;
    for (int i = 0; i < n; i++)f >> a[i];
    f.close();
    merges(0,n-1,a);
    std::ofstream g("algsort.out");
    for (int i = 0; i < n; i++)g<< a[i]<<" ";
    g.close();
}