Pagini recente » Monitorul de evaluare | Cod sursa (job #204006) | Cod sursa (job #736614) | Cod sursa (job #1249966) | Cod sursa (job #1784927)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int v[500001], n, w[500001];
void inter(int i, int j){
int k = 0, ii = i, jj = j, p, pp;
while (i <= j && j <= n){
if (v[i] <= v[j])
w[++k] = v[i++];
else w[++k] = v[j++];
}
while (i <= j) w[++k] = v[i++];
while (j <= n) w[++k] = v[j++];
for (p = ii, pp = 1; p <= jj; ++p, ++pp)
v[p] = w[pp];
}
void mergesort(int st, int dr){
if (st == dr)
return;
int mij = (st + dr) / 2;
mergesort(st, mij);
mergesort(mij + 1, dr);
inter(st, dr);
}
int main()
{
int i;
fin >> n;
for (i = 1; i <= n; i++)
fin >> v[i];
mergesort(1, n);
for (i = 1; i <= n; i++)
fout << v[i] << " ";
return 0;
}