Cod sursa(job #2498973)
| Utilizator | Data | 24 noiembrie 2019 22:50:26 | |
|---|---|---|---|
| Problema | Stramosi | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.61 kb |
#include <bits/stdc++.h>
#define DIM 250010
#define log 20
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int n,m,i,j,p,q,d[25][DIM]; //d[i][j]=al 2i-lea stramos al lui j
int main() {
fin>>n>>m;
for (i=1;i<=n;i++)
fin>>d[0][i];
for (i=1;i<=log;i++)
for (j=1;j<=n;j++)
d[i][j]=d[i-1][d[i-1][j]]; //bucati de puteri de 2
while (m--) {
fin>>q>>p;
for (i=0;(1<<i)<=p;i++)
if (p&(1<<i)) //parcurgem stramosii lui q prin puteri de 2
q=d[i][q];
fout<<q<<"\n";
}
return 0;
}
