Cod sursa(job #1837912)

Utilizator vladm98Munteanu Vlad vladm98 Data 30 decembrie 2016 16:36:24
Problema Stramosi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <bits/stdc++.h>

using namespace std;
int dp[25][250001];
int main()
{
    ifstream fin ("stramosi.in");
    ofstream fout ("stramosi.out");
    int n, m, i, q, p, put, pi, j;
    fin >> n;
    for (i = 1; i<=n; ++i)
        fin >> dp[0][n];
    for (i = 1; i<= 25; ++i)
        for (j = 1; j<=n; ++j)
            dp[i][j] = dp[i-1][dp[i-1][j]];
    for (i = 0; i<m; ++i)
    {
        fin >> q >> p;
        put = 0;
        pi = 1;
        while (pi<<1 <= p)
            ++put, pi<<=1;
        for (j = put; j>=0 && q; --j)
        {
            if (1<<j <= p)
            {
                q = dp[j][q];
                p -= (1<<j);
            }
        }
        fout << q << '\n';
    }
    return 0;
}