Pagini recente » Cod sursa (job #2120142) | Cod sursa (job #3205298) | Cod sursa (job #617787) | Cod sursa (job #1095238) | Cod sursa (job #2940325)
#include <iostream>
using namespace std;
int v[500009];
int a[500009];
void Unire(int st1,int dr1,int st2,int dr2)
{
for(int i=st1;i<=dr1;++i)a[i] = v[i];
for(int j=st2;j<=dr2;++j)a[j] = v[j];
int k = min(st1,st2);
int i = st1,j = st2;
while(i<=dr1&&j<=dr2)
{
if(a[i]<a[j])
v[k++]=a[i++];
else v[k++]=a[j++];
}
while(i<=dr1)v[k++]=a[i++];
while(j<=dr2)v[k++]=a[j++];
}
void Mergesort(int st,int dr)
{
if(st<dr)
{
int mij = (st+dr)/2;
Mergesort(st,mij);
Mergesort(mij+1,dr);
Unire(st,mij,mij+1,dr);
}
}
int main()
{
int n;
cin>>n;
for(int i=0;i<n;++i)cin>>v[i];
Mergesort(0,n-1);
for(int i=0;i<n;++i)cout<<v[i]<<' ';
return 0;
}