Pagini recente » Statistici Leu Radu (leu_radu) | Istoria paginii utilizator/catl | Profil M@2Te4i | Monitorul de evaluare | Cod sursa (job #792379)
Cod sursa(job #792379)
#include <iostream>
#include <fstream>
#include <ctime>
#include <iomanip>
#define NM 500010
using namespace std;
clock_t start=clock();
ifstream f("algsort.in");
ofstream g("algsort.out");
int N,i;
int A[NM],B[NM];
void Merge (int P, int M, int U)
{
int i,j,K;
i=P;
j=M+1;
K=0;
while (i<=M && j<=U)
if (A[i]<=A[j])
B[++K]=A[i++];
else
B[++K]=A[j++];
while (i<=M) B[++K]=A[i++];
while (j<=U) B[++K]=A[j++];
for (i=P,j=1; i<=U; i++,j++)
A[i]=B[j];
}
void MergeSort (int P, int U)
{
if (U-P<=1)
{
if (A[P]>A[U]) swap(A[P],A[U]);
return;
}
int M=(P+U)>>1;
MergeSort(P,M);
MergeSort(M+1,U);
Merge(P,M,U);
}
int main ()
{
f >> N;
for (i=1; i<=N; i++)
f >> A[i];
MergeSort(1,N);
for (i=1; i<=N; i++)
g << A[i] << ' ';
g << '\n';
f.close();
g.close();
//cout << fixed << setprecision(4) << 1.0*(clock()-start)/CLOCKS_PER_SEC << '\n';
return 0;
}