Cod sursa(job #2720245)

Utilizator divianegoescuDivia Negoescu divianegoescu Data 10 martie 2021 17:59:05
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <fstream>
#define K 250002
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int x,y,p2[K],log2[K],d[K][22],i,j,n,m;
int main(){
    fin>>n>>m;
    for(i=1;i<=n;i++){
        fin>>x;
        d[i][0]=x; //d[i][j]=al 2^j lea stramos al lui i
    }
    for(i=1;i<=n;i++)
        for(j=1;(1<<j)<=n;j++)
            d[i][j]=d[d[i][j-1]][j-1];
    for(i=2;i<=n;i++)
        log2[i]=log2[i/2]+1;
    for(p2[0]=i=1;(1<<i)<=n;i++)
        p2[i]=p2[i-1]*2;
    for(;m--;){
        fin>>x>>y; //al y lea stramos al lui x?
        for(;x!=0 && y!=0;){
            x=d[x][log2[y]];
            y-=p2[log2[y]];
        }
        fout<<x<<"\n";
    }
    return 0;
}