Cod sursa(job #871436)

Utilizator gabriel93Robu Gabriel gabriel93 Data 4 februarie 2013 20:10:24
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include<stdio.h>
#define Nmax 500002
using namespace std;
int n;
int a[Nmax],b[Nmax];

void citire()
{
    int i;
    scanf("%d",&n);
    for(i=1;i<=n;++i)
        scanf("%d",&a[i]);
}

void merge_sort(int s,int f)
{
    int i,j,k,m;
    m=(s+f) >> 1; //jumatate
    if(s==f)
        return;
    merge_sort(s,m);
    merge_sort(m+1,f);
    i=s;
    j=m+1;
    for(k=s;k<=s+f;++k)
        if(j>f || (i<=m && a[i]<a[j]))
        {
            b[k]=a[i];
            ++i;
        }
        else
        {
            b[k]=a[j];
            ++j;
        }
    for(i=s;i<=f;++i)
        a[i]=b[i];
}

void rezolv()
{
    int i;
    merge_sort(1,n);
    for(i=1;i<=n;++i)
        printf("%d ",a[i]);
}

int main()
{
    freopen("algsort.in","r",stdin);
    freopen("algsort.out","w",stdout);
    citire();
    rezolv();
    return 0;
}