Cod sursa(job #2656446)
Utilizator | Data | 7 octombrie 2020 19:04:53 | |
---|---|---|---|
Problema | Stramosi | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.76 kb |
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("stramosi.in");
ofstream fout ("stramosi.out");
int tt[250001];
int d[18][250001];
int main()
{
int n, m, i, p, log;
fin>>n>>m;
for(i=1; i<=n; i++)
{
fin>>d[0][i];
}
log=0;
while( (1<<log)<=n )
{
log++;
}
log--;
for(p=1; p<=log; p++)
{
for(i=1; i<=n; i++)
{
d[p][i]=d[p-1][ d[p-1][i] ];
}
}
for(i=1; i<=m; i++)
{
int nod, x;
fin>>nod>>x;
for(p=0; p<=log; p++)
{
if( (1<<p) & x )
{
nod=d[p][nod];
}
}
fout<<nod<<"\n";
}
}