Pagini recente » Cod sursa (job #2919867) | Cod sursa (job #118806) | Cod sursa (job #1210449) | Cod sursa (job #2365508) | Cod sursa (job #74688)
Cod sursa(job #74688)
#include<stdio.h>
struct nod{
long int info;
long int key;
nod *prev;
nod *next;
};
long int n,i,kkey,caut;
nod *prim,*ultim,*sd,*su,*sp;
void prel(nod *dd,nod *uu);
void init();
void ins();
void del();
int main()
{
FILE *f,*g;
f=fopen("schi.in","r");
g=fopen("schi.out","w");
fscanf(f,"%lu",&n);
if(n==1)for(;;);
prim=new nod;
ultim=new nod;
fscanf(f,"%ld",&kkey);
prim->info=1;
prim->key=kkey;
prim->prev=0;
prim->next=0;
ultim=prim;
for(i=2;i<=n;i++)
{ fscanf(f,"%ld",&kkey);
init();
}
sd=prim;caut=1;
while(caut<=n)
{
su=ultim;
while(su->key!=caut)
su=su->prev;
sp=su;
if(su!=sd)
{ sp=su;
for(;;)
{ sp=sp->prev;
sp->key++;
if(sp==sd) break;
}
ins();
del();
}
else sd=sd->next;
caut++;
}
sd=prim;
while(sd)
{
fprintf(g,"%ld\n",sd->info);
sd=sd->next;
}
fprintf(g,"\n");
fcloseall();
return 0;
}
void init()
{
nod *pp;
pp=new nod;
pp->info=i;
pp->key=kkey;
pp->prev=ultim;
pp->next=0;
ultim->next=pp;
ultim=pp;
}
void ins()
{
nod *pp;
pp=new nod;
pp->info=su->info;
pp->key=su->key;
pp->next=sd;
if(sd->prev) { pp->prev=sd->prev;sd->prev->next=pp;}
else { pp->prev=0;prim=pp;}
sd->prev=pp;
}
void del()
{
if(su==ultim) { ultim=ultim->prev;ultim->next=0;su=0;return;}
su->prev->next=su->next;
su->next->prev=su->prev;
su=0;
}