Pagini recente » Cod sursa (job #2518375) | Cod sursa (job #2494308) | Cod sursa (job #1831067) | Cod sursa (job #2346257) | Cod sursa (job #77834)
Cod sursa(job #77834)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(void)
{
FILE *in,*out;
long **v,i,next,n,cate;
long rasp,j,*lung;
in=fopen("stramosi.in","r");
fscanf(in,"%ld",&n);
fscanf(in,"%ld",&cate);
v=(long **)malloc(n*sizeof(long *));
lung=(long *)malloc(n*sizeof(long ));
for(i=0;i<n;i++)
v[i]=(long *)malloc(40*sizeof(long));
for(i=0;i<n;i++)
{
lung[i]=0;
for(j=0;j<40;j++)
v[i][j]=0;
}
for(i=0;i<n;i++)
{
fscanf(in,"%ld",&rasp);
if(rasp!=0)
{
memcpy(v[i],v[rasp-1],sizeof(long)*(lung[rasp-1]+1));
lung[i]=lung[rasp-1]+1;
v[i][lung[i]]=rasp;
}
/* for(j=0;j<13;j++)
printf("%ld ",v[i][j]);
printf("\n");
getch();
*/
}
out=fopen("stramosi.out","w");
for(i=0;i<cate;i++)
{
fscanf(in,"%ld",&next);
fscanf(in,"%ld",&j);
if(j>lung[next-1])
fprintf(out,"0\n");
else
fprintf(out,"%ld\n",v[next-1][lung[next-1]-j+1]);
}
/*
for(i=0;i<n;i++)
{
printf("\n");
for(j=0;j<13;j++)
printf("%ld ",v[i][j]);
}
getch();
getch();
*/
for(i=0;i<n;i++)
{free(v[i]);
v[i]=0;}
free(v);
v=0;
free(lung);
lung=0;
fclose(in);
fclose(out);
return 0;
}