Mai intai trebuie sa te autentifici.
Cod sursa(job #2912155)
Utilizator | Data | 7 iulie 2022 09:16:33 | |
---|---|---|---|
Problema | Sortare prin comparare | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | 17_iulie | Marime | 0.74 kb |
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n,i,nr,h[500001];
void downHeap(int k) {
while (2*k<=nr) {
int p=2*k;
if (p+1<=nr && h[p+1]>h[p])
p++;
if (h[p]>h[k]) {
swap(h[p],h[k]);
k=p;
}
else
break;
}
}
void buildHeap() {
nr=n;
for (int i=n/2;i>=1;i--)
downHeap(i);
}
int main() {
fin>>n;
for (i=1;i<=n;i++)
fin>>h[i];
nr=n;
for (i=n/2;i>=1;i--)
downHeap(i);
for (i=n;i>=1;i--) {
swap(h[1],h[i]);
nr--;
downHeap(1);
}
for (i=1;i<=n;i++)
fout<<h[i]<<" ";
return 0;
}