Cod sursa(job #1049255)

Utilizator Adrian1997Radulescu Adrian Adrian1997 Data 7 decembrie 2013 09:50:16
Problema Sortare prin comparare Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int n,v[500011];

void merge(int p,int u){
    int c[500011],i,j;
    c[0]=0;

    if(p<u){
        merge(p,p+(u-p)/2);
        merge(p+(u-p)/2+1,u);
    }
    i=p,j=p+(u-p)/2+1;
    while(i<=p+(u-p)/2 && j<=u)
        c[++c[0]]=(v[i]>v[j]?v[j++]:v[i++]);
    for(;i<=p+(u-p)/2;i++)
        c[++c[0]]=v[i];
    for(;j<=u;j++)
        c[++c[0]]=v[j];
    for(i=p,j=1;i<=u;i++,j++)
        v[i]=c[j];
}

int main(void){
    register int i;

    f>>n;
    for(i=1;i<=n;i++)
        f>>v[i];

    merge(1,n);
    for(i=1;i<=n;i++)
        g<<v[i]<<" ";
    return 0;
}