Cod sursa(job #1551734)
| Utilizator | Data | 16 decembrie 2015 15:00:20 | |
|---|---|---|---|
| Problema | Stramosi | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.62 kb |
#include <fstream>
#define NMAX 250005
using namespace std;
ifstream f("stramosi.in");
ofstream g("stramosi.out");
int n , m , q , p , x;
int dp[NMAX][25];
int main() {
f >> n >> m;
for(int i = 1 ; i <= n ; ++i) {
f >> x;
dp[i][0] = x;
for(int j = 1 ; j <= 20 ; ++j) {
dp[i][j] = dp[dp[i][j - 1]][j - 1];
}
}
for(int i = 1 ; i <= m ; ++i) {
f >> q >> p;
for(int j = 20 ; j >= 0 ; --j) {
if((1 << j) <= p) {
p -= (1 << j);
q = dp[q][j];
}
}
g << q << '\n';
}
return 0;
}
