Cod sursa(job #3208023)
| Utilizator | Data | 27 februarie 2024 14:18:19 | |
|---|---|---|---|
| Problema | Stramosi | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.6 kb |
#include <fstream>
using namespace std;
ifstream cin("stramosi.in");
ofstream cout("stramosi.out");
int n, q;
int rmq[19][250001];
int main()
{
cin>>n>>q;
for(int i = 1;i<=n;i++)
{
int x;
cin>>x;
rmq[0][i] = x;
}
for(int e = 1;(1<<e)<=n;e++)
{
for(int i = 1;i<=n;i++)
{
rmq[e][i] = rmq[e-1][rmq[e-1][i]];
}
}
while(q--)
{
int node, k;
cin>>node>>k;
for(int i = 0; i<=19;i++)
if((1<<i) & k) node = rmq[i][node];
cout<<node<<"\n";
}
}
