Pagini recente » Cod sursa (job #951870) | Cod sursa (job #2332295) | Cod sursa (job #2954555) | Cod sursa (job #566540) | Cod sursa (job #2866857)
#include <fstream>
const int NMAX = 500000;
std::ifstream f("algsort.in");
std::ofstream g("algsort.out");
int h[NMAX + 5], n;
void insert_heap(int x){
int tata, fiu;
h[++ n] = x;
fiu = n;
while(fiu > 1){
tata = (fiu >> 1);
if(h[tata] > h[fiu]){
int aux = h[tata];
h[tata] = h[fiu];
h[fiu] = aux;
} else break;
fiu >>= 1;
}
}
int get_min_heap(){
return h[1];
}
void delete_heap(){
int fiu, tata;
h[1] = h[n];
n --;
tata = 1;
while(tata <= (n >> 1)){
fiu = (tata << 1);
if(h[fiu] > h[fiu ^ 1] && (fiu ^ 1) <= n)
fiu ++;
if(h[tata] > h[fiu]){
int aux = h[tata];
h[tata] = h[fiu];
h[fiu] = aux;
tata = fiu;
} else break;
}
}
int main(){
int i, m, x;
f >> m;
for(i = 0; i < m; i ++){
f >> x;
insert_heap(x);
}
for(i = 0; i < m; i ++){
g << get_min_heap() << " ";
delete_heap();
}
}