Pagini recente » Cod sursa (job #1819590) | Cod sursa (job #933097) | Cod sursa (job #752033) | Cod sursa (job #1399450) | Cod sursa (job #3123981)
#include <fstream>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
const int N = 5e5;
int nh , h[N + 1] , n;
void urca(int p){
while(p > 1 && h[p] < h[p / 2]){
swap(h[p] , h[p / 2]);
p /= 2;
}
}
void adauga(int val){
h[++nh] = val;
urca(nh);
}
void coboara(int p){
int fiu_s = 2 * p , fiu_d = 2 * p + 1 , ok = p;
if(fiu_s <= nh && h[fiu_s] < h[ok]){
ok = fiu_s;
}
if(fiu_d <= nh && h[fiu_d] < h[ok]){
ok = fiu_d;
}
if(ok != p){
swap(h[p] , h[ok]);
coboara(ok);
}
}
int main(){
in >> n;
for(int i = 1 ; i <= n ; i++){
int x;
in >> x;
adauga(x);
}
for(int i = n ; i > 1 ; i--){
swap(h[1] , h[i]);
nh--;
coboara(1);
}
for(int i = n ; i >= 1 ; i--){
out << h[i] << ' ';
}
}