Pagini recente » Cod sursa (job #170743) | Profil JustEduard | Cod sursa (job #2087247) | Cod sursa (job #2941653) | Cod sursa (job #490238)
Cod sursa(job #490238)
#include <fstream>
using namespace std;
#define DIM 500001
ifstream fi ("algsort.in");
ofstream fo ("algsort.out");
int N, H[DIM];
void swap (int &a, int &b) {
int x;
x=a, a=b, b=x;
}
void heap1 () {
fi >> N;
for (int i=1; i<=N; ++i) {
fi >> H[i];
int poz = i;
while (poz/2 >= 1 && H[poz] < H[poz/2]) {
swap (H[poz], H[poz/2]);
poz = poz/2;
}
}
}
void heap2 () {
for (int i=N; i>0; --i) {
fo << H[1] << ' ';
H[1] = H[i];
int poz = 1;
while (poz*2 < i) {
poz = poz*2;
if (poz+1 < i && H[poz] > H[poz+1]) poz++;
if (H[poz] > H[poz/2]) break;
swap (H[poz], H[poz/2]);
}
}
}
int main () {
heap1 ();
heap2 ();
return 0;
}