Pagini recente » Monitorul de evaluare | Monitorul de evaluare | Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #3348760)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
void mergeSort( int v[], int st, int dr )
{
if ( st == dr )
return ;
int mij = (st + dr) / 2;
mergeSort( v, st, mij);
mergeSort( v, mij + 1, dr);
vector <int> aux;
int i = st, j = mij + 1;
while ( i <= mij || j <= dr )
{
if ( v[i] < v[j] || j > dr )
aux.push_back(v[i++]);
else
aux.push_back(v[j++]);
}
for ( i = 0; i < aux.size(); ++i )
v[st + i] = aux[i];
}
int main()
{
int n, i, v[500005];
fin >> n;
for ( i = 1; i <= n; ++i )
fin >> v[i];
mergeSort(v, 1, n);
for ( i = 1; i <= n; ++i )
fout << v[i] << " ";
return 0;
}