Pagini recente » Autentificare | ubb-1 | Istoria paginii runda/prega_oji2015_vi_4/clasament | Istoria paginii runda/agm2/clasament | Cod sursa (job #2702912)
#include <fstream>
using namespace std;
ifstream cin ("algsort.in");
ofstream cout ("algsort.out");
int v[500001], c[500001];
void MSort (int left,int right)
{
if (left==right)
{
return;
}
MSort(left,(right+left)/2);
MSort((left+right)/2+1,right);
int a=left,b=(left+right)/2+1;
for (int i=left; i<=right; i++)
{
if (a>(left+right)/2)
{
for (int j=i; j<=right; j++)
{
c[j]=v[b];
b++;
}
break;
}
else if (b>right)
{
for (int j=i; j<=right; j++)
{
c[j]=v[a];
a++;
}
break;
}
else if (v[a]<=v[b])
{
c[i]=v[a];
a++;
}
else if (v[a]>v[b])
{
c[i]=v[b];
b++;
}
}
for (int i=left; i<=right; i++)
{
v[i]=c[i];
}
}
int main()
{
int n;
cin >> n;
for (int i=1; i<=n; i++)
{
cin >> v[i];
}
MSort(1,n);
for (int i=1; i<=n; i++)
{
cout << c[i] << " ";
}
return 0;
}