Cod sursa(job #1716951)

Utilizator andrey2397Barbu Andrei Octavian andrey2397 Data 13 iunie 2016 23:56:46
Problema Sortare prin comparare Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <iostream>
#include <fstream>

using namespace std;

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

const int NMAX=500001;

long long int b[NMAX], a[NMAX];
int i, n;



int sortare(int st, int dr, long long int a[NMAX])
{
    int i, j, m, k=0;


    if(dr<=st) return 0;

    i=st;
    m=(st+dr)/2;
    j=m+1;

    sortare(i, m, a);
    sortare(j, dr, a);

    while(i<=m && j<=dr){
        if(a[i]<=a[j]){
            b[++k]=a[i];
            i++;
        }else{
            b[++k]=a[j];
            j++;
        }
    }

    for(;i<=m;i++) b[++k]=a[i];
    for(;j<=dr;j++) b[++k]=a[j];


    k=1;
    for(i=st;i<=dr;i++){
        a[i]=b[k];
        k++;
    }
}


int main()
{
    fin>>n;
    for(i=1;i<=n;i++) fin>>a[i];

    sortare(1, n, a);

    for(i=1;i<=n;i++) fout<<a[i]<<" ";
    return 0;
}