Cod sursa(job #1246446)

Utilizator cipriancxFMI - gr143 Timofte Ciprian cipriancx Data 21 octombrie 2014 08:54:44
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <iostream>
#include<cstdio>
using namespace std;

int n,v[500001],r[500001];

void mergesort(int stg, int drp)
{

if((drp-stg) <= 1){if(v[stg]>v[drp]){ int aux=v[stg]; v[stg]=v[drp]; v[drp]=aux;} }

else {

    int mij=(stg+drp)>>1;
    mergesort(stg,mij);
    mergesort(mij+1,drp);

    int dim=1;
    int i=stg,j=mij+1;

    while((i<=mij) && (j<=drp)) if(v[i]<v[j])r[dim++]=v[i++];
                                else r[dim++]=v[j++];

    while(i<=mij)r[dim++]=v[i++];
    while(j<=drp)r[dim++]=v[j++];
    dim--;
    for(int k=drp; k>=stg; k--)v[k]=r[dim--];




}



}

int main()
{
    freopen("algsort.in","r",stdin);
    freopen("algsort.out","w",stdout);
    scanf("%d",&n);

for(int i=1; i<=n; i++)scanf("%d",&v[i]);
mergesort(1,n);
for(int i=1; i<=n; i++)printf("%d ",v[i]);



    return 0;
}