Cod sursa(job #1054256)

Utilizator usermeBogdan Cretu userme 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;
}