Cod sursa(job #3166738)

Utilizator laura2020Moldovan Laura laura2020 Data 9 noiembrie 2023 15:22:42
Problema Stramosi Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
#define dim1 22
#define dim2 100001
vector<int> v;
int dp[dim1][dim2];

int main()
{
    int n,m,j,nr,cnt,und,i,k=0,a,b;
    fin>>n>>m;
    v.resize(n+1);
    for(i=1;i<=n;i++)
    {
        fin>>nr;
        v[i]=dp[0][i]=nr;
    }
    while((1<<k)<=n)
        k++;
    k--;
    for(i=1;i<=k;i++)
    {
        for(j=1;j<=n;j++)
        {
            dp[i][j]=dp[i-1][dp[i-1][j]];
        }
    }
    for(i=0;i<m;i++)
    {
        fin>>a>>b;
        cnt=k;
        und=a;
        while(b>0)
        {
            if(b>=(1<<cnt))
            {
                und=dp[cnt][und];
                b-=(1<<cnt);
            }
            else
            {
                cnt--;
            }
        }
        fout<<und<<'\n';
    }
    return 0;
}