Cod sursa(job #1976335)

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

int d[20][250005];

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[0][i]);

    for(int j = 1; j <= 17; ++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 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[j][a];
        }
        printf("%d\n",a);
    }
    return 0;
}