Cod sursa(job #1299673)

Utilizator deea101Andreea deea101 Data 23 decembrie 2014 19:51:45
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");

const int NMAX=500001;
int v[NMAX],res[NMAX];

void mergesort (int sir[],int S,int F)
{
    if(S==F) return;
    else
    {
        int mid=S+(F-S)/2,piv=mid+1; //!
        mergesort(v,S,mid);
        mergesort(v,mid+1,F);
        
        int aux=S,i;

        for(i=S;i<=F;i++)
        {
            if(S<=mid && (piv>F || sir[S]<=sir[piv]))
                res[i]=sir[S++];
            else
                res[i]=sir[piv++];
        }
        
        for(i=aux;i<=F;i++)
            sir[i]=res[i];
    }
}
int main()
{
    int N;
    f>>N;
    int i;
    for(i=1;i<=N;i++)
        f>>v[i];
    
    mergesort(v,1,N);

    for(i=1;i<=N;i++)
        g<<v[i]<<' ';
}