Cod sursa(job #1101314)

Utilizator negreadumitruNegrea Dumitru negreadumitru Data 8 februarie 2014 11:54:07
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb

#include <fstream>
#include <cmath>
using namespace std;
ifstream f("stramosi.in");
ofstream g("stramosi.out");

int N, Q, s[20][250005], lg, x, y;

int main()
{
    f>>N>>Q;
    lg=log2(N);
    for (int i=1; i<=N; ++i)
        f>>s[0][i];

    for (int j=1; j<=lg; ++j)
        for (int i=1; i<=N; ++i)
            s[j][i]=s[j-1][s[j-1][i]];

    for (int i=1; i<=Q; ++i)
    {
        f>>x>>y; y<<=1;
        for (int k=0; k<=lg && x; ++k)
        {
            y>>=1;
            if (y&1) x=s[k][x];
        }
        g<<x<<'\n';
    }

    return 0;
}