Pagini recente » Cod sursa (job #1746955) | Cod sursa (job #63142) | Cod sursa (job #290806) | Cod sursa (job #89081) | Cod sursa (job #1041900)
#include<stdio.h>
FILE*f=fopen("algsort.in","r");
FILE*g=fopen("algsort.out","w");
int n,v[1000001],nr;
void up(int nr)
{
int k=v[nr];
int nod=nr;
while(k<v[nod/2])
{
v[nod]=v[nod/2];
nod/=2;
}
v[nod]=k;
}
void down()
{
int k=v[1];
int nod=1;
int fiu;
while(1)
{
nod*=2;
fiu=0;
if((nod<=nr&&v[nod]<k)||(nod+1<=nr&&v[nod+1]<k))
fiu=nod;
if(nod+1<=nr&&v[nod]>v[nod+1])
fiu=nod+1;
if(fiu)
{
v[fiu/2]=v[fiu];
nod=fiu;
}
else
break;
}
v[nod/2]=k;
}
int main()
{
fscanf(f,"%d",&n);
for(int i=1;i<=n;++i)
{
fscanf(f,"%d",&v[i]);
nr=i;
up(nr);
}
for(int i=1;i<=n;++i)
{
fprintf(g,"%d ",v[1]);
v[1]=v[nr--];
down();
}
fclose(f);
fclose(g);
return 0;
}