Pagini recente » Cod sursa (job #783057) | Cod sursa (job #533134) | Cod sursa (job #1144430) | Cod sursa (job #1829364) | Cod sursa (job #595037)
Cod sursa(job #595037)
#include<stdio.h>
#include<malloc.h>
typedef struct _nod
{
int info;
struct _nod *s;
struct _nod *d;
} nod;
int N;
int a;
void add(nod*& a,nod*& b,int c)
{
nod *nou = (nod*)malloc(sizeof(nod));
nou->info = c;
nou->d = b;
nou->s = a;
a->d = nou;
b->s = nou;
}
int main()
{
FILE *f = fopen("schi.in","r");
FILE *g = fopen("schi.out","w");
fscanf(f,"%d ",&N);
nod *cap = (nod*)malloc(sizeof(nod));
cap->d = NULL;
cap->s = NULL;
fscanf(f,"%d ",&cap->info);
nod *coada = (nod*)malloc(sizeof(nod));
cap->d = coada;
coada->d = NULL;
coada->s = cap;
fscanf(f,"%d ",&a);
if(a == 2)
coada->info = 2;
else
coada->info = 1,cap->info = 2;
for(int i=3;i<=N;i++)
{
fscanf(f,"%d ",&a);
if(a == 1)
{
cap->s = (nod*)malloc(sizeof(nod));
cap->s->info = i;
cap->s->s = NULL;
cap->s->d = cap;
cap = cap->s;
}
else if(a == i)
{
coada->d = (nod*)malloc(sizeof(nod));
coada->d->info = i;
coada->d->d = NULL;
coada->d->s = coada;
coada = coada->d;
}
else
{
nod *q = cap;
for(int j=1;j<a-1;j++,q=q->d);
add(q,q->d,i);
}
}
for(;cap;cap=cap->d)
fprintf(g,"%d\n",cap->info);
fclose(g);
fclose(f);
return 0;
}