Pagini recente » Statistici soim casian claudiu (ClaudiuSoim) | Diferente pentru preoni-2005/runda-3/solutii intre reviziile 20 si 12 | Diferente pentru lot-2017/baraj-2 intre reviziile 3 si 4 | Monitorul de evaluare | Cod sursa (job #1219984)
#include <iostream>
#include <fstream>
const int MAXN = 1000005;
using namespace std;
int ok=0;
int v[MAXN];
int n;
int p1[MAXN], p2[MAXN];
void mergesort(int i,int j)
{
if(j - i >= 1)
{
int mij = (i + j) / 2;
mergesort(i,mij);
mergesort(mij + 1, j);
for (int k = i; k <= mij; k++){
p1[k] = v[k];
}
for (int k = mij + 1; k <= j; k++) {
p2[k] = v[k];
}
int st1 = i, dr1 = mij;
int st2 = mij + 1, dr2 = j;
int iv = i;
while(st1 <= dr1 && st2 <= dr2) {
if (p1[st1] >= p2[st2]) {
v[iv] = p2[st2];
st2++;
} else {
v[iv] = p1[st1];
st1++;
}
iv++;
}
while(st1 <= dr1) {
v[iv] = p1[st1];
st1++; iv++;
}
while(st2 <= dr2) {
v[iv] = p2[st2];
st2++; iv++;
}
}
}
int main()
{
ifstream cin("algsort.in");
ofstream cout("algsort.out");
cin>>n;
for(int i=1;i<=n;i++)
cin>>v[i];
mergesort(1,n);
for(int i=1;i<=n;i++)
cout<<v[i]<<" ";
return 0;
}