Cod sursa(job #1537968)

Utilizator hasmasandragosHasmasan Dragos hasmasandragos Data 28 noiembrie 2015 12:33:50
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("stramosi.in");
ofstream g("stramosi.out");
const int nmax=250005;
//d[i][j]= al 2^i-lea stramos a lui j
int d[22][nmax],i,n,m,j;

int query (int p , int q)
{
    int h;
    for (h=0;(1<<h)<=p;h++)
    {
        if ((1<<h)&p)
        {
            q=d[h][q];
        }
    }
    return q;
}

int main()
{
    f>>n>>m;
    for (i=1;i<=n;i++)
        f>>d[0][i];

    for (i=1;(1<<i)<=n;i++)
      for (j=1;j<=n;j++)
        d[i][j]=d[i-1][d[i-1][j]];

    while (m--)
    {
        int x,y;
        f>>x>>y;
        g<<query(y,x)<<'\n';
    }

    return 0;
}