Cod sursa(job #2603391)

Utilizator Cezar211Popoveniuc Cezar Cezar211 Data 19 aprilie 2020 17:34:24
Problema Stramosi Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <bits/stdc++.h>
#define NM 250005
using namespace std;
int n, Q, x, c, p, t[NM][18];
void build()
{
    for(int i=1; i<=17; i++)
    {
        for(int nod=1; nod<=n; nod++)
            t[nod][i] = t[t[nod][i-1]][i-1];
    }
}
FILE* fin;
FILE* fout;
int main()
{
    fin = fopen("stramosi.in", "r");
    fout = fopen("stramosi.out", "w");
    fscanf(fin, "%d%d", &n, &Q);
    for(int i=1; i<=n; i++)
        fscanf(fin, "%d", &t[i][0]);
    build();
    while(Q--)
    {
        fscanf(fin, "%d%d", &x, &c);
        if(c > n)
            fprintf(fout, "0\n");
        else
        {
            p = 0;
            while(c)
            {
                if(c&1)
                    x = t[x][p];
                c>>=1;
                ++p;
            }
            fprintf(fout, "%d\n", x);
        }
    }

    return 0;
}