Cod sursa(job #566773)

Utilizator SadmannCornigeanu Calin Sadmann Data 29 martie 2011 12:00:05
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<fstream>
using namespace std;
int S[20][250001],n,m;
ifstream in("stramosi.in");
ofstream out("stramosi.out");
inline void Constr()
{
    bool ok=true;
    int lv=0;
    while(ok)
    {
        ok=false;
        lv++;
        for(int i=1;i<=n;i++)
        {
            int j=S[lv-1][i];
            S[lv][i]=S[lv-1][j];
            if(S[lv][i])
                ok=true;
        }
    }
}
int main()
{
    in>>n>>m;
    for(int i=1;i<=n;i++)
    {
        in>>S[0][i];
    }
    Constr();

    int x,y;
    int niv;
    for(;m;m--)
    {
        in>>x>>y;
        niv=0;
        while(y)
        {
            if(y%2)
                x=S[niv][x];
            y>>=1;
            niv++;
        }
        out<<x<<'\n';
    }





    return 0;
}