Cod sursa(job #931925)
| Utilizator | Data | 28 martie 2013 16:38:37 | |
|---|---|---|---|
| Problema | Stramosi | Scor | 80 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.57 kb |
#include <fstream>
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int n,m,x,y,lg[250001],query[17][250001];
int main()
{
fin>>n>>m;
for(int i = 1; i<= n; i++ )
{
fin>>query[0][i];
if(i>1) lg[i]=1+lg[i>>1];
}
for(int j = 1; (1<<j) <= n; j++ )
for(int i = 1; i<= n; i++ )
query[j][i] = query[j-1][query[j-1][i]];
while(m--)
{
fin>>x>>y;
while(y)
x = query[lg[y]][x], y -= (1<<lg[y]);
fout<<x<<'\n';
}
fin.close();
fout.close();
return 0;
}
