Cod sursa(job #1707558)

Utilizator cristian.caldareaCaldarea Cristian Daniel cristian.caldarea Data 25 mai 2016 15:13:53
Problema Stramosi Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 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 >> x;

        s[i][0] = x;
    }

    for ( int j = 0; j <= 17; 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;
        for ( z = 0; (1 << z) <= y; z++)
        {
            if ( (1 << z) & y )
            {
                x = s[x][z];
            }
        }
        fout << x << '\n';
    }
    fin.close();
    fout.close();
    return 0;
}