Pagini recente » Cod sursa (job #2583244) | Cod sursa (job #1971824) | Cod sursa (job #2485315) | Cod sursa (job #1812047) | Cod sursa (job #35084)
Cod sursa(job #35084)
#include<fstream.h>
#define SIZE 100
ifstream f("stramosi.in");
ofstream g("stramosi.out");
int p[250001],a[SIZE][SIZE],min[SIZE],max[SIZE],n,m;
void citire()
{
f>>n>>m;
int i;
for(i=1;i<=n;i++)
{
f>>p[i];
if(i<SIZE)min[i]=1000,max[i]=0;
}
}
int getstramos(int Q,int q,int k,int ktot)
{
if(ktot-k>0 && ktot-k<SIZE && Q<=SIZE)
a[Q][ktot-k]=q;
if(k==0)
{
if(Q<SIZE && ktot<SIZE)a[Q][ktot]=q;
return q;
}
if(Q<SIZE)
{
if(min[Q]>ktot-k)min[Q]=ktot-k;
if(max[Q]<ktot-k)max[Q]=ktot-k;
}
if(p[q])return getstramos(Q,p[q],k-1,ktot);
else return 0;
}
int main()
{
citire();
int q,k,i;
for(i=1;i<=m;i++)
{
f>>q>>k;
if(q<SIZE && min[q]<=k && k<=max[q])
g<<a[q][k]<<"n";
else
g<<getstramos(q,q,k,k)<<"\n";
}
f.close();
g.close();
return 0;
}