Pagini recente » Profil StarGold2 | Cod sursa (job #2971091) | Cod sursa (job #2950757) | Monitorul de evaluare | Cod sursa (job #2085803)
#include <iostream>
#include <fstream>
/// Merge Sort ///
#define For(i, a, b) for (int i = (a); i <= (b); ++ i)
using namespace std;
void Intercl (int* x, int s, int m, int d)
{
int z[d-s+2], k=0;
int i=s, j=m+1;
while (i<=m and j<=d)
if (x[i]<x[j]) z[++k]=x[i++]; else
z[++k]=x[j++];
while (i<=m) z[++k]=x[i++];
while (j<=d) z[++k]=x[j++];
For (i,1,k) x[s+i-1]=z[i];
}
void M_s (int* X, int d, int s=1)
{
if (s<d) { int m=(s+d)/2;
M_s(X,m,s); M_s(X,d,m+1);
Intercl(X,s,m,d);
} }
int main()
{
ifstream f("algsort.in");
ofstream g("algsort.out");
int n,v[200005];
f>>n;
for (int i=1;i<=n;i++)
f>>v[i];
M_s(v,n);
for (int i=1;i<=n;i++)
g<<v[i]<<" ";
return 0;
}