Pagini recente » Cod sursa (job #1668872) | Cod sursa (job #867368) | Cod sursa (job #2139231) | Cod sursa (job #2156702) | Cod sursa (job #79483)
Cod sursa(job #79483)
#include <stdio.h>
#include <stdlib.h>
#define infile "stramosi.in"
#define outfile "stramosi.out"
#define nmax 250001
long n, m, c[nmax], i, q, p, j;
long *v[nmax];
int main()
{
int temp;
freopen(infile, "r", stdin);
freopen(outfile, "w", stdout);
scanf("%ld %ld\n", &n, &m);
for (i=1; i<=n; i++)
{
scanf("%ld ", &c[i]);
v[i]=(long *)calloc(1, sizeof(long));
}
for (int l=1; l<=m; l++)
{
scanf("%ld %ld\n", &q, &p);
i=q;
j=i;
while(c[j])
{
if (v[c[j]][0])
{
v[i]=(long *)realloc(v[i], (v[i][0]+v[c[j]][0]+3)*sizeof(long));
v[i][++v[i][0]]=c[j];
for (long k=1; k<=v[c[j]][0]; k++)
v[i][v[i][0]+k]=v[c[j]][k];
v[i][0]+=v[c[j]][0];
break;
}
else
{
v[i][++v[i][0]]=c[j];
j=c[j];
}
}
if (v[q][0]>=p)
printf("%ld\n", v[q][p]);
else
printf("0\n");
}
fclose(stdin);
fclose(stdout);
return 0;
}