Cod sursa(job #1757330)

Utilizator KronSabau Valeriu Kron Data 14 septembrie 2016 20:50:48
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <iterator>
#include <limits>
#include <stack>
using namespace std;

ifstream f("stramosi.in");
ofstream g("stramosi.out");

int n,m;
int a[30][250001];

int solve(int x,int y,int k)
{

     for(int i=0; (1<<i)<=n; i++){

            if((1<<i) & y)
                x=a[i][x];
    }

    return x;

}

int main()
{
    int x;
    f >> n >> m;
    for(int i=1;i<=n;i++)
    {
        f >> x;
        a[0][i]=x;
    }
    int y,k=0;
    for(int i=1;(1<<i)<=n;i++)
        for(int j=1;j<=n;j++)
        {
            a[i][j]=a[i-1][a[i-1][j]];
        }

    for(int i=1;i<=m;i++)
    {

        f >> x >> y;
        int aux=y;
        k=0;
        while(aux>1)
        {
            aux=aux>>1;
            k++;
        }

        g << solve(x,y,k) << "\n";


    }

   /* for(int j=0;j<4;j++){
        for(int i=1;i<=n;i++)

           cout << a[j][i] << " ";
       cout << "\n";
    } */

    return 0;
}