Pagini recente » Cod sursa (job #2333692) | Cod sursa (job #2661051) | Cod sursa (job #102496) | Cod sursa (job #2653770) | Cod sursa (job #287333)
Cod sursa(job #287333)
#include <fstream>
using namespace std;
void add(unsigned long h[],long n,long elem)
{
h[n+1] = elem;
long ind = n+1;
while(ind>1 && h[ind]<h[ind/2])
{
long aux = h[ind];
h[ind] = h[ind/2];
h[ind/2] = aux;
ind/=2;
}
}
void descend(unsigned long h[],long n)
{
long i = 1;
while (2*i<=n && (h[i]>h[2*i] || h[i]>h[2*i+1]))
{
long ind = h[2*i] < h[2*i+1] ? 2*i : 2*i+1;
long aux = h[i];
h[i] = h[ind];
h[ind] = aux;
i = ind;
}
}
int main()
{
ifstream f("algsort.in");
ofstream f2("algsort.out");
unsigned long h[500001];
int n;
memset(h,2147483647LL,sizeof(h));
f>>n;
for(int i=0;i<n;i++)
{
unsigned long elem;
f>>elem;
add(h,i,elem);
}
for(int i=0;i<n;i++)
{
f2<<h[1]<<" ";
h[1] = h[n-i];
descend(h,n-i-1);
}
f.close();
f2.close();
return 0;
}