Cod sursa(job #1265461)

Utilizator PavelPavel Ana-Oriana Pavel Data 17 noiembrie 2014 12:44:29
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <cstdio>

using namespace std;

FILE *in,*out;

const int N = 500005;

int v[N],aux[N],n;

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

void ms(int st , int dr){
    if(st == dr)
        return;
    int m = (st+dr)/2;
    ms(st,m);
    ms(m+1,dr);
    mrg(st,dr);
}

int main()
{
    in = fopen("algsort.in","r");
    out = fopen("algsort.out","w");

    int n , i;
    fscanf(in,"%d",&n);

    for(i = 1 ; i <= n ; i++)
        fscanf(in,"%d",&v[i]);
    ms(1,n);
    for(i = 1 ; i <= n ; i++)
        fprintf(out,"%d ",v[i]);
    fprintf(out,"\n");
    return 0;
}