Cod sursa(job #1976327)

Utilizator tiberiu225Iancu Tiberiu tiberiu225 Data 3 mai 2017 09:27:02
Problema Stramosi Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <cstdio>
using namespace std;

int d[250005][20];

int main()
{
    freopen("stramosi.in","r",stdin);
    freopen("stramosi.out","w",stdout);
    int n, m; scanf("%d%d", &n, &m);

    for(int i = 1; i <= n; ++i)
        scanf("%d", &d[i][0]);

    for(int j = 1; j <= 17; ++j)
        for(int i = 1; i <= n; ++i)
            d[i][j] = d[d[i][j-1]][j-1];

    for(int i = 1; i <= m; ++i)
    {
        int a, b; scanf("%d%d", &a, &b);
        /// b-lea stramos al lui a
        for(int j = 0; j <= 17; ++j)
        {
            if((1<<j)&b)
                a = d[a][j];
        }
        printf("%d\n",a);
    }
    return 0;
}