Cod sursa(job #2201847)

Utilizator HumikoPostu Alexandru Humiko Data 6 mai 2018 12:09:52
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <bits/stdc++.h>
#define lim 250010

using namespace std;

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

int n, m, dp[19][lim], logaritm[lim], stramosi[lim];

int cautare(int care, int cnt)
{
    for ( int i = logaritm[n]; i >= 0; --i )
    {
        if ( 1<<i <= cnt )
        {
            care = dp[i][care];
            cnt -= (1<<i);
        }
    }
    return care;

}

int main()
{
    ios::sync_with_stdio(false);
    fin.tie(0); fout.tie(0);
    fin>>n>>m;
    for ( int i = 1; i <= n; i++ )
    {
        fin>>dp[0][i];
        logaritm[i] = logaritm[i/2]+1;
    }
    for ( int i = 1; i <= logaritm[n]; ++i )
        for ( int j = 1; j <= n; ++j )
            dp[i][j] = dp[i-1][dp[i-1][j]];
    for ( int i = 1; i <= m; ++i )
    {
        int q, p;
        fin>>q>>p;
        fout<<cautare(q, p)<<'\n';
    }
}