Pagini recente » Cod sursa (job #1657041) | Cod sursa (job #89049) | Cod sursa (job #1774068) | Cod sursa (job #1256258) | Cod sursa (job #2188174)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("stramosi.in");
ofstream fout ("stramosi.out");
const int PMAX = 19;
const int NMAX = 250005;
int n , Q , dp[PMAX][NMAX];
/// d[i][j]=stramosul lui j aflat la distanta 2^i
int main()
{
int p , q , expo;
fin >> n >> Q;
for(int i = 1 ; i <= n ; i++)
fin >> dp[0][i];
for(int i = 1 ; i <= PMAX - 1 ; i++)
for(int j = 1 ; j <= n ; j++)
dp[i][j] = dp[i - 1][dp[i - 1][j]];
while(Q -- )
{
fin >> q >> p;
expo = 0;
while(p)
{
if(p & 1)
q = dp[expo][q];
expo++;
p /= 2;
}
fout << q << "\n";
}
fin.close();
fout.close();
return 0;
}