Cod sursa(job #241554)
#include<fstream>
#include<algorithm>
using namespace std;
int a[500009];
int c[500009];
void mergesort(int p, int u){
if(p<u){
int m=(p+u)/2,i;
mergesort(p,m);
mergesort(m+1,u);
i=0;
int s1=p,s2=m+1;
while(s1<=m&&s2<=u)
c[i++]=a[s1]<a[s2]?a[s1++]:a[s2++];
while(s1<=m)
c[i++]=a[s1++];
while(s2<=u)
c[i++]=a[s2++];
int j=u;
while(--i)
a[j--]=c[i];
a[j]=c[0];
}
}
int main(){
ifstream f("algsort.in");
ofstream g("algsort.out");
int n,i;
f>>n;
for(i=0;i<n;i++)
f>>a[i];
f.close();
mergesort(0,n-1);
for(i=0;i<n;i++)
g<<a[i]<<' ';
g<<'\n';
g.close();
return 0;
}