Cod sursa(job #1368089)

Utilizator cosmin.pascaruPascaru Cosmin cosmin.pascaru Data 2 martie 2015 13:54:20
Problema Stramosi Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
//#include <fstream>
#include <cstdio>

#define NMAX 250005
using namespace std;

//ifstream fin("stramosi.in");
//ofstream fout("stramosi.out");

int t[NMAX][21];

int main()
{
    freopen("stramosi.in", "r", stdin);
    freopen("stramosi.out", "w", stdout);

    int n, m, q, p, rez;
    //fin >> n >> m;
    scanf("%d %d", &n, &m);
    for (int i = 1; i <= n; ++i)
        scanf("%d", &t[i][0]);

        //fin >> t[i][0];

    for (int j = 1; (1 << j) <= n; ++j)
        for (int i = 1; i <= n; ++i)
            t[i][j] = t[ t[i][j-1] ][j-1];
    for (; m ; --m)
    {
        scanf("%d %d", &q, &p);
        //fin >> q >> p;
        rez = q;
        for (int i = 0; (1 << i) <= p; ++i)
        {
            if (p & (1 << i)) rez = t[rez][i];
            if (!rez) break;
        }
        printf("%d\n", rez);
        //fout << rez << '\n';
    }
    return 0;
}