Cod sursa(job #3206791)

Utilizator VerestiucAndreiVerestiuc Andrei VerestiucAndrei Data 24 februarie 2024 09:48:28
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin ("stramosi.in");
ofstream fout ("stramosi.out");
int d[20][250005];
int main() {
    int n,m;
    fin>>n>>m;
    for (int i=1; i<=n; i++) {
        int x;
        fin>>x;
        d[0][i]=x;
    }
    
    for (int i=1; (1<<i)<=n; i++) {
        for (int j=1; j<=n; j++) {
            d[i][j]=d[i-1][d[i-1][j]];
        }
    }
    
    for (int i=1; i<=m; i++) {
        int k,q;
        fin>>q>>k;
        int stramos=q;
        for (int j=0; (1<<j)<=k; j++) {
            if (((1<<j)&k)!=0)
                {
                    //if (q==5) cout<<(1<<j)<<' '<<k<<' '<<((1<<j)&k)<<'\n';
                    stramos=d[j][stramos], k-=(1<<j);
                }
        }
        fout<<stramos<<'\n';
    }
    return 0;
}