Pagini recente » Cod sursa (job #2332216) | Cod sursa (job #807145) | Cod sursa (job #1435064) | Cod sursa (job #1640111) | Cod sursa (job #780849)
Cod sursa(job #780849)
#include <fstream>
#include <cmath>
#include <algorithm>
using namespace std;
int h[500003],i,n,k;
void heapup( int i )
{
if (i*2>1)
if (h[i] < h[i/2])
{
swap( h[i] , h[i/2] );
heapup( i/2 );
}
}
void heapdown( int i )
{
if (i*2<=n)
{
if (i*2+1<=n && h[i*2]>h[i*2+1] && h[i]>h[i*2+1] )
{
swap(h[i*2+1],h[i]);
heapdown( i*2+1 );
}
else if (h[i] > h[i*2] )
{
swap( h[i] , h[i*2] );
heapdown( i*2 );
}
}
}
int main()
{
ifstream f("algsort.in");
ofstream g("algsort.out");
f>>n;
for (i=1; i<=n; i++)
{
f>>h[i];
heapup(i);
}
k=n;
for (i=1; i<k; i++)
{
// g<<h[1]<<" ";
swap(h[1],h[n]);
n--;
heapdown( 1 );
}
for(i=k; i>=1; i--) g<<h[i]<<" ";
f.close();
g.close();
return 0;
}