Pagini recente » Monitorul de evaluare | Cod sursa (job #851282) | Cod sursa (job #2953768) | Cod sursa (job #1983548) | Cod sursa (job #2624769)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int v[500001];
void interclasare(int s, int d, int m)
{
int a[500001], i, j, k = 0;
i = s;
j = m + 1;
while(i <= m && j <= d)
if(v[i] < v[j]) a[++k] = v[i++];
else a[++k] = v[j++];
while(i <= m)
a[++k] = v[i++];
while(j <= d)
a[++k] = v[j++];
for(i = s, j = 1; j <= k; ++i, ++j)
v[i] = a[j];
}
void mergesort(int s, int d)
{
if(s < d)
{
int m = (s + d) / 2;
mergesort(s, m);
mergesort(m + 1, d);
interclasare(s, d, m);
}
}
int main()
{
int n;
fin >> n;
for(int i = 1; i <= n; ++i)
fin >> v[i];
mergesort(1, n);
for(int i = 1; i <= n; ++i)
fout << v[i] << " ";
return 0;
}