Cod sursa(job #984491)

Utilizator assa98Andrei Stanciu assa98 Data 14 august 2013 17:05:33
Problema Stramosi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.56 kb
#include <cstdio>
using namespace std;

const int MAX_N = 250100;

int d[19][MAX_N];

int n,m;

int main() {
    freopen("stramosi.in","r",stdin);
    freopen("stramosi.out","w",stdout);
    scanf("%d%d",&n,&m);
    
    for(int i=1;i<=n;i++)
        scanf("%d",&d[0][i]);
    
    for(int j=2;j<=18;j++) {
        for(int i=1;i<=n;i++)
            d[j][i]=d[j-1][d[j-1][i]];
    }

    for(int i=1;i<=m;i++) {
        int p,q;
        scanf("%d%d",&q,&p);
        for(int j=18;j>=0;j--)
            if(p&(1<<j)) q=d[j][q];
        printf("%d\n",q);
    }

    return 0;
}