Cod sursa(job #77877)

Utilizator vlad3rsterian vladut vlad3r Data 15 august 2007 00:07:41
Problema Stramosi Scor 40
Compilator c Status done
Runda Arhiva de probleme Marime 1.16 kb
#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]+2));
		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;
}