Cod sursa(job #1707564)

Utilizator cristian.caldareaCaldarea Cristian Daniel cristian.caldarea Data 25 mai 2016 15:31:54
Problema Stramosi Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 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 s[Nmax][22];


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

    for ( int i = 1; i <= n; i++ )
    {
        fin >> s[i][0];
    }

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

    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;
}