Cod sursa(job #2498048)

Utilizator DanutAldeaDanut Aldea DanutAldea Data 23 noiembrie 2019 14:04:14
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <fstream>
#include <iostream>
using namespace std;

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

int n,m,v[20][250001],i,j,p[20],x,cnt;

int main(){
    fin>>n>>m;

    for(i=1;i<=n;i++){
        fin>>v[0][i];
    }
    p[0]=1;

    for(cnt=1,j=2;j<=n;cnt++,j*=2){
        p[cnt]=j;

        for(i=1;i<=n;i++)
            v[cnt][i]=v[cnt-1][ v[cnt-1][i] ];
    }
    cnt--;

//    for(i=0;i<=cnt;i++){
//        for(j=1;j<=n;j++)
//            cout<<v[i][j]<<" ";
//        cout<<"\n";
//    }

    for(;m;m--){
        fin>>i>>x;

        while(x){
            j=0;
            while(2*p[j]<=x){
                j++;
            }
//            cout<<p[j];

            i=v[j][i];
            x-=p[j];
        }

        fout<<i<<"\n";
    }

    return 0;
}