Pagini recente » Monitorul de evaluare | police | Clasament All You Can Code 2008 | Rating Andrei Simion (andrei0simion) | Cod sursa (job #1324940)
using namespace std;
#define NMAX 500001
int v[NMAX],res[NMAX];
void mergesort(int v[], int S, int F)
{
if(S==F) return;
int mid=S+(F-S)/2;
mergesort(v,S,mid);
mergesort(v,mid+1,F);
int piv=mid+1,aux=S,i;
for(i=S;i<=F;i++)
{
if(piv>F || (S<=mid && v[S]<=v[piv]))
res[i]=v[S++];
else res[i]=v[piv++];
}
for(i=aux;i<=F;i++)
v[i]=res[i];
}
#include <fstream>
ifstream f("algsort.in");
ofstream g("algsort.out");
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]<<' ';
}