Cod sursa(job #868986)

Utilizator mitrutstrutMitrea Andrei Ionut mitrutstrut Data 31 ianuarie 2013 20:37:55
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <stdio.h>
int log2[250001],str[19][250002],n,m;
 
int main(){
    freopen("stramosi.in","r",stdin);
    freopen("stramosi.out","w",stdout);
    scanf("%d %d",&n,&m);
    log2[1]=0;
    for(int i=1;i<=n;i++){
        scanf("%d",&str[0][i]);
    }
    for(int i=2;i<=n;i++)
        log2[i]=log2[i/2]+1;
    for(int lev=1;lev<19;lev++){
        for(int i=1;i<=n;i++)
            str[lev][i]=str[lev-1][str[lev-1][i]];
    }
     
     
    int p,q;
    for(int i=0;i<m;i++){
        scanf("%d %d",&q,&p);
        while(p!=0 && q!=0){
            q=str[log2[p]][q];
            p-=(1<<log2[p]);
        }
        printf("%d\n",q);
    }
     
    return 0;
}