Cod sursa(job #1265353)

Utilizator avladVlad Anca avlad Data 17 noiembrie 2014 10:18:37
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>

using namespace std;

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

const int N=500005;

int aux[N];
void merge (int st, int dr, int v[N])
{
    int i, k, j;
    int m=(st+dr)/2;
    i=k=st;
    j=m+1;
    while ( i<=m && j<=dr)
        if (v[i]<=v[j])
            aux[k++]=v[i++];
        else
            aux[k++]=v[j++];
    while (i<=m) aux[k++]=v[i++];
    while (j<=dr) aux[k++]=v[j++];
    for (i=st; i<=dr; i++)
        v[i]=aux[i];
}

void ms(int st, int dr, int v[N])
{

    if (st==dr) return;
    int m=(st+dr)/2;
    ms(st, m, v);
    ms(m+1, dr, v);
    merge (st, dr, v);
}



int main()
{
    int a, n, st, dr, v[N];
    in >> n;
    for (int b=1; b<=n; b++)
        in >> v[b];

    ms (1, n, v);
    for (int i=1; i<=n; i++)
        out << v[i] << " ";
}