Cod sursa(job #2129193)

Utilizator RaduMirceaAndreiRadu Mircea Andrei RaduMirceaAndrei Data 12 februarie 2018 16:47:26
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
# include <fstream>
# define DIM 500010
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int a[DIM],b[DIM],c[DIM],v[DIM],n,i;
void interclaseaza(int c[],int a[],int b[]){
    int i=1,j=1;
    c[0]=0;
    while(i<=a[0]&&j<=b[0])
        if(a[i]<b[j])
            c[++c[0]]=a[i++];
        else
            c[++c[0]]=b[j++];
    for(;i<=a[0];i++)
        c[++c[0]]=a[i];
    for(;j<=b[0];j++)
        c[++c[0]]=b[j];
}
void sorteaza(int st,int dr){
    if(st==dr)
        return;
    int mij=(st+dr)/2;
    sorteaza(st,mij);
    sorteaza(mij+1,dr);
    a[0]=b[0]=0;
    int i;
    for(i=st;i<=mij;i++)
        a[++a[0]]=v[i];
    for(;i<=dr;i++)
        b[++b[0]]=v[i];
    interclaseaza(c,a,b);
    for(i=st;i<=dr;i++)
        v[i]=c[i-st+1];
}
int main () {
    fin>>n;
    for(i=1;i<=n;i++)
        fin>>v[i];
    sorteaza(1,n);
    for(i=1;i<=n;i++)
        fout<<v[i]<<" ";
    fout<<"\n";
    return 0;
}