Cod sursa(job #579954)
Utilizator | Data | 12 aprilie 2011 16:48:36 | |
---|---|---|---|
Problema | Stramosi | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.61 kb |
#include <cstdio>
#include <fstream>
using namespace std;
#define p(x) 1<<x
int a[p(5)][p(18)];
int main ()
{
ifstream in ("stramosi.in");
int n,m;
in>>n>>m;
for(int i=1;i<=n;++i)
in>>a[0][i];
int L[p(18)];
L[1]=0;
for(int i=2;i<=n;++i)
L[i]=L[i>>1]+1;
for(int i=1;p(i)<=n;++i)
for(int j=1;j<=n;++j)
a[i][j]=a[i-1][a[i-1][j]];
int b,c;
freopen ("stramosi.out","w",stdout);
for(;m;--m){
in>>b>>c;
for(;c;c-=(p(L[c])))
b=a[L[c]][b];
printf("%d\n",b);
}
return 0;}