Cod sursa(job #1385486)

Utilizator PletoPletosu Cosmin-Andrei Pleto Data 11 martie 2015 23:49:58
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <fstream>
#include <algorithm>
#define nmax 500010
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");

int N,V[nmax];

void cit()
{
    in>>N;
    for(int i=1;i<=N;++i)
        in>>V[i];
}

void afis()
{
    for(int i=1;i<=N;++i)
        out<<V[i]<<" ";
    out<<'\n';
}

void interclaseaza(int s,int d,int m)
{
    int i=s,j=m+1,k=1,v[nmax];
    while(i<=m && j<=d)
    {
        if(V[i]<V[j]) {v[k]=V[i];i++;}
        else {v[k]=V[j];j++;}
        k++;
    }
    while(i<=m) {v[k]=V[i];i++;k++;}
    while(j<=d) {v[k]=V[j];j++;k++;}
    for(k=1,i=s;i<=d;k++,i++) V[i]=v[k];
}

void mergesort(int s,int d)
{
    int m;
    if(s<d)
    {
        m=(s+d)/2;
        mergesort(s,m);
        mergesort(m+1,d);
        interclaseaza(s,d,m);
    }
}

int main()
{
    cit();
    mergesort(1,N);
    afis();
    in.close();out.close();return 0;
}