Cod sursa(job #616674)

Utilizator soriynSorin Rita soriyn Data 13 octombrie 2011 01:24:18
Problema Stramosi Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include<stdio.h>
#include<fstream>
#define maxn 250010
#include<stack>
using namespace std;

int tati[maxn];

stack<int> stiva;
char s[1<<25];
int n,m,spct;



inline int next()
{
int ret=0;
while ( s[spct] && (s[spct]<'0' || s[spct]>'9')) ++spct;

while ( s[spct]>='0' && s[spct]<='9' )

ret= ret*10+ s[spct]-'0',++spct;
return ret;
}


inline void nextline(){
fgets( s , 1<<25 ,stdin);spct=0;
}





int main()
{
	freopen ("stramosi.in","r",stdin);
    freopen ("stramosi.out","w",stdout);

	
	int a,b,cnt,nod,val,x;
	scanf("%d %d\n",&n,&m);
	fgets(s,1<<25,stdin);
	for(int i=1;i<=n;i++)
	{
		x=next();
		tati[i]=x;
	}
    for(int i=1;i<=m;i++)
	{
		scanf("%d %d",&nod,&val);
		cnt=0;
		stiva.push(nod);
		while(1!=0)
	    {
			nod=stiva.top();
			stiva.pop();
		if(cnt==val) {printf("%d\n",nod);break;}
		else
		{
			cnt++;
			if(tati[nod]==0) {printf("0\n");break;}
			else {stiva.push(tati[nod]);}
		}
	    }

		//dfs(a,0,b);
	}
}