Pagini recente » Cod sursa (job #2081975) | Cod sursa (job #2935711) | Cod sursa (job #2622153) | Cod sursa (job #980336) | Cod sursa (job #608310)
Cod sursa(job #608310)
#include <cstdio>
struct nod{int inf;nod *urm;};
nod *P[1<<19],*PR,*UL,*PA,*PB;
int A,B,C,X,Y,M;
int main()
{
freopen("algosort.in","r",stdin);
freopen("algosort.out","w",stdout);
M=1<<19;M--;
scanf("%d",&C);
for(A=1;A<=C;A++)
{
scanf("%d",&B);
P[A]=new nod;P[A]->inf=B;P[A]->urm=0;
}
A=1;B=2;
for(;A-C;)
{
X=P[A]->inf<=P[B]->inf?A:B;
Y=A+B-X;
PR=UL=P[X];PA=PR->urm;UL->urm=0;PB=P[Y];
P[A]=P[B]=0;
A=(B+1)&M;
B=(A+1)&M;
C=(C+1)&M;
for(;PA&&PB;)
{
if(PA->inf<=PB->inf)
{
UL->urm=PA;UL=PA;PA=PA->urm;UL->urm=0;
continue;
}
UL->urm=PB;UL=PB;PB=PB->urm;UL->urm=0;
}
if(PA)UL->urm=PA;else UL->urm=PB;
P[C]=PR;
}
for(PR=P[C];PR;PR=PR->urm)printf("%d\n",PR->inf);
return 0;
}