Cod sursa(job #1778972)

Utilizator borscalinCalin-Stefan Georgescu borscalin Data 14 octombrie 2016 16:18:27
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
#include <cstdio>
#define NMAX 250001

using namespace std;

int d[19][NMAX];

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