Mai intai trebuie sa te autentifici.
Cod sursa(job #1959966)
Utilizator | Data | 10 aprilie 2017 08:51:41 | |
---|---|---|---|
Problema | Stramosi | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.75 kb |
#include <fstream>
#include <cmath>
#define NMAX 250005
#define LMAX 22
using namespace std;
ifstream f("stramosi.in");
ofstream g("stramosi.out");
int n, nrq, x, y, tata[NMAX], dp[LMAX][NMAX], lg[NMAX];
int main()
{
f >> n >> nrq;
lg[0] = -1;
for (int i = 1; i <= n; ++ i)
{
f >> tata[i];
lg[i] = lg[i / 2] + 1;
dp[0][i] = tata[i];
}
for (int i = 1; (1 << i) <= n; ++ i)
for (int j = 1; j <= n; ++ j)
dp[i][j] = dp[i - 1][dp[i - 1][j]];
while (nrq)
{
nrq --;
f >> x >> y;
while (y)
{
x = dp[lg[y]][x];
y -= (1 << lg[y]);
}
g << x << '\n';
}
return 0;
}