Cod sursa(job #2016820)

Utilizator ovidiuz98Zamfir Ovidiu ovidiuz98 Data 30 august 2017 16:02:40
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>
#define DIM 500002

using namespace std;

int a[DIM],n,i,b[DIM];

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

void merge(int st,int m,int dr){

    int i=st;
    int j=m+1;
    int k=0;
    while(i<=m && j<=dr)
        if(a[i]<=a[j])
            b[++k]=a[i++];
        else
            b[++k]=a[j++];
    while(i<=m)
        b[++k]=a[i++];
    while(j<=dr)
        b[++k]=a[j++];
    for(i=st,k=0;i<=dr;i++)
        a[i]=b[++k];

}

void sort(int st,int dr){

    if(st>=dr)
        return;
    int m=(st+dr)/2;
    sort(st,m);
    sort(m+1,dr);
    merge(st,m,dr);

}


int main(){

    fin >> n;

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

    sort(1,n);

    for(int i=1;i<=n;i++)
        fout << a[i] << " ";

    return 0;

}