Cod sursa(job #1348178)
Utilizator | Data | 19 februarie 2015 15:54:00 | |
---|---|---|---|
Problema | Stramosi | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.56 kb |
#include <iostream>
#include <fstream>
using namespace std;
int N,M,dp[250010][20];
int main(){
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
fin >> N >> M;
int i,j,x,l;
for (i=1; i<=N; i++){
fin >> dp[0][i];
}
for (i=1; (1<<i)-1<=N; i++)
for (j=1; j<=N; j++)
dp[i][j]=dp[i-1][dp[i-1][j]];
for (i=1; i<=M; i++){
fin >> x >> l;
for (j=0; (1<<j)<=l; j++)
if (l&(1<<j)) x=dp[j][x];
fout << x << "\n";
}
return 0;
}