Cod sursa(job #1169615)

Utilizator ThomasFMI Suditu Thomas Thomas Data 11 aprilie 2014 19:10:50
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.6 kb
#include <fstream>
using namespace std;

#define LgMax 20
#define NMax 250005

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

int n,m;
int s[LgMax][NMax];

int main()
{
    int i,j;

    f>>n>>m;
    for(i=1;i<=n;i++) f>>s[0][i];

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

    int q,p,lg;
    while(m--)
    {
        f>>q>>p;
        while(p)
        {
            for(lg=1;(1<<lg)<=p;lg++); lg--;
            p-=(1<<lg);
            q=s[lg][q];
        }
        g<<q<<"\n";
    }

    f.close();
    g.close();
    return 0;
}