Cod sursa(job #1706436)

Utilizator cristian.caldareaCaldarea Cristian Daniel cristian.caldarea Data 22 mai 2016 16:37:51
Problema Stramosi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;

ifstream fin("stramosi.in");
ofstream fout("stramosi.out");

const int Nmax = 250005;

int n, m;
int log2[Nmax], s[Nmax][22];


int main()
{
    int x, y, z, t;
    fin >> n >> m;

    for ( int i = 1; i <= n; i++ )
    {
        fin >> x;

        s[i][0] = x;
    }

//    log2[1] = 0;
//    for ( int i = 2; i <= n; i++ )
//        log2[i] = log2[i/2] + 1;


    for ( int j = 0; j <= log2[n]; j++ )
        for ( int i = 1; i <= n; i++ )
            s[i][j+1] = s[s[i][j]][j];

    for ( int i = 1; i <= m; i++ )
    {

        fin >> x >> y;
        while(y > 0)
        {
            z = 1;
            for ( t = 0; z * 2 <= y; ++t)
                z = z * 2;
            x = s[x][t];
            y = y - z;

        }
        fout << x << '\n';
    }
    fin.close();
    fout.close();
    return 0;
}