Cod sursa(job #317678)

Utilizator freak93Adrian Budau freak93 Data 24 mai 2009 20:33:47
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<fstream>
#define log 19
#define maxn 250002

using namespace std;

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

int a[log][maxn],i,j,n,m,p,q,step;
int main()
{
    f>>n>>m;

    for(i=1;i<=n;++i)
        f>>a[1][i],a[0][i]=i;

    for(step=0;(1<<step)<=n;++step);

    for(i=2;i<=step;++i)
        for(j=1;j<=n;++j)
            a[i][j]=a[i-1][a[i-1][j]];

    for(i=1;i<=m;++i)
    {
        f>>q>>p;

        for(step=0;(1<<step)<=p;++step);

        for(j=0;step>=0;--step)
            if(j+(1<<step)<=p)
                q=a[step+1][q],j+=(1<<step);

        g<<q<<"\n";
    }

    f.close();
    g.close();

    return 0;
}