Cod sursa(job #1845161)

Utilizator stefii_predaStefania Preda stefii_preda Data 10 ianuarie 2017 23:10:25
Problema Stramosi Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <fstream>

using namespace std;
ifstream in ("stramosi.in");
ofstream out ("stramosi.out");

const int LOG = 25;
const int N = 250005;

int p[N][LOG];//p[i][j] = stram cu 2^j niv mai sus ca i
int main()
{
    int i, j, n, q;
    in >> n >> q;
    for(i = 1; i <= n; i++)
        in >> p[i][0];
    for(j = 1; (1<<j) < n; j++)
        for(i = 1; i <= n; i++)
            p[i][j] = p[p[i][j-1]][j-1];
    int a, b;

    for(int k = 1; k <= q; k++)
    {
        in>> a >> b;
        //al b-ulea stramos al lui a
        j = 20;

        while(j>=0)
        {
            if((1<<j) <= b)
            {
                b -= (1<<j);
                a = p[a][j];
            }
            j--;
        }
        out<<a<<"\n";

    }
    return 0;
}