Pagini recente » Cod sursa (job #381553) | Cod sursa (job #974550) | Soluţii ONIS 2016, Runda 2 | Cod sursa (job #190931) | Cod sursa (job #2016820)
#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;
}