Pagini recente » Cod sursa (job #182222) | Cod sursa (job #449781) | Cod sursa (job #1561975) | Cod sursa (job #3251299) | Cod sursa (job #1934934)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("stramosi.in");
ofstream g("stramosi.out");
int dp[100][250001];
int main()
{
int n , m, i, j, p , q;
f >> n >> m;
for(i = 1 ; i <= n ; i++)
f >> dp[0][i];
for(i = 1 ; i <= 25; i++)
{
for(j = 1 ; j <= n ; j++)
dp[i][j] = dp[i-1][dp[i-1][j]]; /// al 2^i -lea stramos a lui j
}
for(i = 0 ; i < m ; i++)
{
int put = 0, pi = 1;
f >> q >> p;
while(pi * 2 <= p)
{
pi = pi * 2;
put++;
}
for(j = put; j >= 0 && p ; j--)
{
if(1 << j <= p)
{
q = dp[j][q];
p -= 1 << j;
}
}
g << q << '\n';
}
}