Cod sursa(job #608310)

Utilizator proflaurianPanaete Adrian proflaurian Data 16 august 2011 11:25:21
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#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;
}