Cod sursa(job #3246187)

Utilizator robert111Peter Robert robert111 Data 2 octombrie 2024 10:20:06
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 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 && cnt<20)
        {
            if((p&b)>0)///am gasit bit
            {
                a=v[cnt][a];
                b=(p^b);
                 //cout<<b<<'\n';
            }

            p*=2;
            cnt++;
            if(a==0)break;
        }
        cout<<a<<'\n';
    }
    return 0;
}
/**
13 2
0 1 2 2 4 1 6 0 8 8 10 10 12
5 4
5 10
*/