Cod sursa(job #1054256)
| Utilizator | Data | 13 decembrie 2013 15:53:24 | |
|---|---|---|---|
| Problema | Stramosi | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.71 kb |
#include <cstdio>
#include <vector>
using namespace std;
FILE*f=fopen("stramosi.in","r");
FILE*h=fopen("stramosi.out","w");
int m[22][250001],n,w,a;
int main()
{
fscanf(f,"%d%d",&n,&w);
for ( int i=1;i<=n;++i ){
fscanf(f,"%d",&a);
m[0][i]=a;
}
for ( int i=1;i<=20;++i ){
for ( int j=1;j<=n;++j ){
m[i][j]=m[i-1][m[i-1][j]];
}
}
for ( int i=1;i<=w;++i ){
int q,p;
fscanf(f,"%d%d",&q,&p);
int k=20;
while ( p>0 ){
if ( (1<<k)<=p ){
q=m[k][q];
p=p-(1<<k);
}
--k;
}
fprintf(h,"%d\n",q);
}
return 0;
}
