Pagini recente » Cod sursa (job #2834936) | Cod sursa (job #1948260) | Cod sursa (job #2803228) | Cod sursa (job #2631196) | Cod sursa (job #2670273)
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
const int NMax = 5e5;
int N, V[NMax + 5], A[NMax + 5];
void Read()
{
fin >> N;
for(int i = 1; i <= N; i++) {
fin >> V[i];
}
}
void Mergesort(int left, int right)
{
if(left >= right)
return;
int pivot = (left + right) >> 1;
Mergesort(left, pivot);
Mergesort(pivot + 1, right);
/// merge
int i = left, j = pivot + 1, ct = 0;
while(i <= pivot && j <= right) {
if(V[i] < V[j])
A[++ct] = V[i++];
else
A[++ct] = V[j++];
}
while(i <= pivot)
A[++ct] = V[i++];
while(j <= right)
A[++ct] = V[j++];
for(int i = 1; i <= ct; i++)
V[left + i - 1] = A[i];
}
void Print()
{
for(int i = 1; i <= N; i++) {
fout << V[i] << " ";
}
fout << '\n';
}
int main()
{
Read();
Mergesort(1, N);
Print();
return 0;
}