Pagini recente » Cod sursa (job #1264083) | Cod sursa (job #1142038) | Cod sursa (job #677954) | Cod sursa (job #744031) | Cod sursa (job #1310209)
#include <fstream>
using namespace std;
int n, h[500100], sz;
inline void Urca(int poz)
{
if(poz == 1)
return;
if(h[poz] < h[poz / 2])
{
swap(h[poz], h[poz / 2]);
Urca(poz / 2);
}
}
inline void Coboara(int poz)
{
if(poz * 2 > sz)
return;
int minim = 2 * poz;
if(poz * 2 + 1 <= sz && h[poz * 2] > h[poz * 2 + 1])
minim = 2 * poz + 1;
if(h[poz] > h[minim])
{
swap(h[poz], h[minim]);
Coboara(minim);
}
}
int main()
{
int i, x;
ifstream fin("algsort.in");
fin >> n;
for(i = 1; i <= n; ++i)
{
fin >> x;
h[++sz] = x;
Urca(sz);
}
fin.close();
ofstream fout("algsort.out");
for(i = 1; i <= n; ++i)
{
fout << h[1] << ' ';
swap(h[1], h[sz]);
sz--;
Coboara(1);
}
fout << endl;
fout.close();
return 0;
}