Cod sursa(job #1041982)
Utilizator | FMI Stanescu Leonard Wyvern | Data | 26 noiembrie 2013 13:50:08 |
---|---|---|---|
Problema | Sortare prin comparare | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 1.17 kb |
#include <iostream>
#include <fstream>
using namespace std;
ifstream fi("algsort.in");
ofstream fo("algsort.out");
int v[200002],w[200002],n,x;
void stergere(int i) {
if ((v[2*i]==0)&&(v[2*i+1]==0))
v[i]=0;
else
if ((v[2*i]==0)&&(v[2*i+1]!=0)) {
v[i]=v[2*i+1];
v[2*i+1]=0;
}
else
if ((v[2*i]!=0)&&(v[2*i+1]==0)) {
v[i]=v[2*i];
v[2*i]=0;
}
else
if (v[2*i]<v[2*i+1]) {
v[i]=v[2*i];
stergere(2*i);
}
else {
v[i]=v[2*i+1];
stergere(2*i+1);
}
}
int main()
{
fi>>n;
for (int i=1;i<=n;i++) {
fi>>x;
if (v[i/2]<=x)
v[i]=x;
else {
int j=i;
while (v[j/2]>x) {
v[j]=v[j/2];
v[j/2]=x;
j=j/2;
}
}
}
for (int i=1;i<=n;i++) {
w[i]=v[1];
stergere(1);
}
for (int i=1;i<=n;i++)
fo<<w[i]<<' ';
return 0;
}