Cod sursa(job #937672)

Utilizator narcis_vsGemene Narcis - Gabriel narcis_vs Data 10 aprilie 2013 20:17:48
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>
#define In "stramosi.in"
#define Out "stramosi.out"
#define Nmax 250002
using namespace std;
int stramos[20][Nmax];
//stramos[i][j]=al 2^i-lea stramos a lui j
int n;
inline void Calcul()
{
    int i,j;
    for(i=1;(1<<i)<=n;i++)
        for(j=1;j<=n;j++)
            stramos[i][j] = stramos[i-1][stramos[i-1][j]];
}

int main()
{
    int i,p,q,k;
    ifstream fin(In);
    ofstream fout(Out);
    fin>>n>>k;
    for(i=1;i<=n;i++)
        fin>>stramos[0][i];
    Calcul();
    while(k--)
    {
        fin>>q>>p;
        while(p&&q)
        {
            for(i=0;(1<<i)<=p;i++);
            i--;
            q = stramos[i][q];
            p-=(1<<i);
        }
        fout<<q<<"\n";
    }
    fin.close();
    fout.close();
    return 0;
}