Cod sursa(job #1497984)

Utilizator CollermanAndrei Amariei Collerman Data 7 octombrie 2015 21:05:10
Problema Stramosi Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <fstream>
using namespace std;
ofstream fout("stramosi.out");
ifstream fin("stramosi.in");

const int NMAX = 250050;

int n, m;
int ST[20][NMAX];

int log2(int val)
{
    int sol = 0;

    while(val / 2) {
        val /= 2;
        sol++;
    }

    return sol;
}

int main()
{
    fin >> n >> m;
    for(int i=1; i<=n; i++)
        fin >> ST[0][i];
    int log = log2(n);
    for(int j=1; j<=log; j++)
        for(int i=1; i<=n; i++)
            ST[j][i] = ST[j-1][ST[j-1][i]];
    for(int i=1, x, y; i<=m; i++) {
        fin >> x >> y;
        for(int j=20; j>=0; j--)
            if(y & (1 << j))
                x = ST[j][x];
        fout << x << '\n';
    }
    return 0;
}