Pagini recente » Istoria paginii runda/dopaj | Monitorul de evaluare | Istoria paginii runda/simulare_de_oni_6 | Diferente pentru olimpici intre reviziile 180 si 138 | Cod sursa (job #2901344)
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
const int maxN = 500005;
int n, v[maxN], h[maxN];
void mergeSort(int st, int dr)
{
if(st >= dr)
return;
int mij = (st + dr) / 2;
mergeSort(st, mij);
mergeSort(mij + 1, dr);
int i = st, j = mij + 1, k = st;
while(i <= mij || j <= dr)
{
if(j > dr || (i <= mij && v[i] < v[j]))
h[k++] = v[i++];
else
h[k++] = v[j++];
}
for(i = st; i <= dr; i++)
v[i] = h[i];
}
int main()
{ f >> n;
for(int i = 1; i <= n; i++)
f >> v[i];
mergeSort(1, n);
for(int i = 1; i <= n; i++)
g << v[i] << ' ';
return 0;
}