Pagini recente » Cod sursa (job #1384651) | Cod sursa (job #2897158) | Cod sursa (job #1443124) | Cod sursa (job #407137) | Cod sursa (job #77980)
Cod sursa(job #77980)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(void)
{
FILE *in,*out;
int **v,i,next,n,cate;
int rasp,j,*lung;
in=fopen("stramosi.in","r");
fscanf(in,"%d",&n);
fscanf(in,"%d",&cate);
v=(int **)malloc(n*sizeof(int *));
lung=(int *)malloc(n*sizeof(int ));
for(i=0;i<n;i++)
lung[i]=0;
fscanf(in,"%d",&rasp);
v[0]=(int *)malloc(1*sizeof(int));
lung[0]=1;
v[0][0]=rasp;
for(i=1;i<n;i++)
{
fscanf(in,"%d",&rasp);
if(rasp!=0)
{
v[i]=(int *)malloc((lung[rasp-1]+1)*sizeof(int));
memcpy(v[i],v[rasp-1],sizeof(int)*(lung[rasp-1]));
lung[i]=lung[rasp-1]+1;
v[i][lung[i]-1]=rasp;
}
}
out=fopen("stramosi.out","w");
for(i=0;i<cate;i++)
{
fscanf(in,"%d",&next);
fscanf(in,"%d",&j);
if(j>lung[next-1])
fprintf(out,"0\n");
else
fprintf(out,"%d\n",v[next-1][lung[next-1]-j]);
}
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;
}