Pagini recente » Cod sursa (job #508530) | Cod sursa (job #2588796) | Cod sursa (job #2475183) | Cod sursa (job #436250) | Cod sursa (job #2031178)
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
long long n, v[500002], x, k;
void inserare(long long x)
{
v[++k]=x;
int c=k;
int p=k/2;
while(p>0 && v[c]>v[p])
{
swap(v[c], v[p]);
c=p;
p=c/2;
}
}
void stergere(long long rad)
{
swap(v[1], v[rad]);
k--;
int p=1;
int c=2;
while(c<=k)
{
if(c+1<=k && v[c+1]>v[c])
c++;
if(v[c]>v[p])
{
swap(v[c], v[p]);
p=c;
c*=2;
}
else break;
}
}
int main()
{
f>>n;
for(int i=1;i<=n;i++)
{
f>>x;
inserare(x);
}
for(int i=n;i>0;i--)
stergere(i);
for(int i=1;i<=n;i++)
g<<v[i]<<" ";
return 0;
}