Pagini recente » ONIS 2014, Clasament Runda 1 | Cod sursa (job #2787056) | Cod sursa (job #1156883) | Cod sursa (job #1170548) | Cod sursa (job #2051784)
#include <fstream>
#define Nmax 500002
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int a[Nmax],n;
void Read(int &n,int a[Nmax])
{
int i;
fin>>n;
for(i=1;i<=n;i++)
fin>>a[i];
}
void Merge(int s,int m,int d)
{
int i=s,j=m+1;
int b[Nmax],k=0,cnt;
while(i<=m&&j<=d)
if(a[i]<a[j]){b[++k]=a[i];++i;}
else {b[++k]=a[j];++j;}
while(i<=m){b[++k]=a[i];++i;}
while(j<=d){b[++k]=a[j];++j;}
cnt=1;
for(i=s;i<=d;i++)
{a[i]=b[cnt]; ++cnt;}
}
void MergeSort(int s,int d)
{
if(s<d)
{
int m=(s+d)/2;
MergeSort(s,m);
MergeSort(m+1,d);
Merge(s,m,d);
}
}
void Print(int n,int a[Nmax])
{
int i;
for(i=1;i<=n;i++)
fout<<a[i]<<" ";
}
int main()
{
Read(n,a);
MergeSort(1,n);
Print(n,a);
return 0;
}