Pagini recente » Cod sursa (job #2421781) | Cod sursa (job #2650582) | Cod sursa (job #1920587) | Cod sursa (job #2398220) | Cod sursa (job #3231815)
#include <fstream>
using namespace std;
const int N = 25e4;
const int L = 17;
int s[L+1][N+1], n;
void constructie_s()
{
for (int i = 1; (1 << i) <= n; i++)
{
for (int j = 1; j <= n; j++)
{
s[i][j] = s[i-1][s[i-1][j]];
}
}
}
int interogare(int x, int nrs)
{
int i = 0;
while ((1 << i) <= nrs)
{
if (nrs & (1 << i))///daca bitul i al lui nrs este 1
{
x = s[i][x];
}
i++;
}
return x;
}
int main()
{
ifstream in("stramosi.in");
ofstream out("stramosi.out");
int q;
in >> n >> q;
for (int j = 1; j <= n; j++)
{
in >> s[0][j];
}
constructie_s();
for (int i = 0; i < q; i++)
{
int x, nrs;
in >> x >> nrs;
out << interogare(x, nrs) << "\n";
}
in.close();
out.close();
return 0;
}