Cod sursa(job #3246180)

Utilizator robert111Peter Robert robert111 Data 2 octombrie 2024 10:02:13
Problema Stramosi Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>
#include <cmath>
#include <vector>

using namespace std;
ifstream cin("stramosi.in");
ofstream cout("stramosi.out");
int v[100][250001];
int main()
{
    int n,m,l,a,b;
    cin>>n>>m;
    l=log2(n);
    //vector<vector<int>>v(l+1,vector<int>(n,0));
    for(int i=1; i<=n; i++)
        cin>>v[1][i];
    for(int i=2; i<l+1; i++)
    {
        for(int j=1; j<=n; j++)
            v[i][j]=v[i-1][v[i-1][j]];
    }
    for(int i=0;i<m;i++)
    {
        cin>>a>>b;
        int p=1,cnt=1;
        while(b>0)
        {
            if((p&b)>0)///am gasit bit
            {
                a=v[cnt][a];
                b=(p^b);
            }
            p*=2;
            cnt++;
            if(a==0)break;
        }
        cout<<a<<'\n';
    }
    return 0;
}