Cod sursa(job #1454451)

Utilizator SilviuIIon Silviu SilviuI Data 26 iunie 2015 17:00:08
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <stdio.h>
#include <iostream>
#include <cstring>
#include <stdlib.h>
#include <time.h>
#include <bitset>
#include <string>
#include <vector>
#include <math.h>
#include <stack>
#include <queue>
#include <list>
#include <set>
#include <map>
#include <limits.h>
#include <algorithm>
#include <deque>
#define nmax 500010
using namespace std;
int n,i,t[nmax],c[nmax];
void mergesort(int st,int dr)
{
    int m=(st+dr)/2,k,i,j;
    if (st==dr) return;
    mergesort(st,m);
    mergesort(m+1,dr);
    for (i=st,j=m+1,k=1;i<=m || j<=dr; )
        if (j>dr || (t[i]<t[j] && i<=m)) c[k++]=t[i++]; else
            c[k++]=t[j++];
    for (i=st;i<=dr;i++) t[i]=c[i-st+1];
}
int main(){
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
scanf("%d",&n);
for (i=1;i<=n;i++) scanf("%d",&t[i]);
mergesort(1,n);
for (i=1;i<=n;i++) printf("%d ",t[i]);
return 0;
}