Cod sursa(job #2578697)

Utilizator TudorChirila11Tudor Chirila TudorChirila11 Data 11 martie 2020 14:06:57
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.62 kb
#include <bits/stdc++.h>
#define st first
#define nd second
#define pb push_back
#define N 200005
using namespace std;
typedef long long ll;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int n, m, i, j, v[250005][20], x, p, q, p2, ip;
int main()
{
	fin>>n>>m;
	for(i=1;i<=n;++i)
		{
			fin>>x;
			v[i][0]=x;
			j=0;
			do
			{
				++j;
				v[i][j]=v[v[i][j-1]][j-1];
			}while(v[i][j]);
		}
	for(i=1;i<=m;++i)
	{
		fin>>q>>p;
		p2=1;
		ip=0;
		while(p2<=p)
		{
			p2*=2;
			++ip;
		}
		p2/=2;
		--ip;
		while(p&&q)
		{
			while(p2>p)
			{
				p2/=2;
				--ip;
			}
			p-=p2;
			q=v[q][ip];
		}
		fout<<q<<'\n';
	}
}