Cod sursa(job #1371706)

Utilizator ovidiuz98Zamfir Ovidiu ovidiuz98 Data 4 martie 2015 00:12:10
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>
#define DIM 500005

using namespace std;

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

int N,a[DIM];
void interc(int p,int m,int u){
    int b[u-p+2],i=p,j=m+1,k=0;
    while(i<=m && j<=u)
        if(a[i]<a[j])
            b[++k]=a[i++];
        else
            b[++k]=a[j++];
    for(;i<=m;i++)
        b[++k]=a[i];
    for(;j<=u;j++)
        b[++k]=a[j];
    for(i=1;i<=k;i++)
        a[p+i-1]=b[i];
}
void mergesort(int p,int u){
    if(p==u)
        return;
    int mid=(p+u)>>1;
    mergesort(p,mid);
    mergesort(mid+1,u);
    interc(p,mid,u);
}
int main(){
    fin>>N;
    for(int i=1;i<=N;i++)
        fin>>a[i];
    mergesort(1,N);
    for(int i=1;i<=N;i++)
        fout<<a[i]<<" ";
    fin.close();fout.close();
    return 0;
}