Pagini recente » Cod sursa (job #2310586) | Cod sursa (job #984070) | Cod sursa (job #251902) | Cod sursa (job #2367464) | Cod sursa (job #77934)
Cod sursa(job #77934)
#include <stdio.h>
//#include <conio.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(50*sizeof(long));
for(i=0;i<n;i++)
{
lung[i]=0;
//for(j=0;j<50;j++)
// v[i][j]=0;
}
fscanf(in,"%ld",&rasp);
v[0]=(long *)malloc(2*sizeof(long));
lung[0]=1;
v[0][1]=rasp;
for(i=1;i<n;i++)
{
fscanf(in,"%ld",&rasp);
if(rasp!=0)
{
v[i]=(long *)malloc((lung[rasp-1]+2)*sizeof(long));
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]);
}
/*
printf("\n");
for(i=0;i<5;i++)
printf("%ld ",v[0][i]);
printf("\n");
// {
// printf("\n");
for(j=0;j<n;j++)
printf("%ld ",lung[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;
}