Cod sursa(job #608311)

Utilizator proflaurianPanaete Adrian proflaurian Data 16 august 2011 11:34:30
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <cstdio>
struct nod{int inf;nod *urm;};
nod **P,*PR,*UL,*PA,*PB;
int A,B,C,X,Y,M;

int main()
{
    freopen("algosort.in","r",stdin);
    freopen("algosort.out","w",stdout);
    scanf("%d",&C);M=C+1;
    P=new nod* [M];
    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=A+2<=M?A+2:A+2-M;
        B=B+2<=M?B+2:B+2-M;
        C=C+1<=M?C+1: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 ",PR->inf);
    return 0;
}