Cod sursa(job #2696422)

Utilizator Antonia_onisoruantonia onisoru Antonia_onisoru Data 15 ianuarie 2021 21:11:13
Problema Stramosi Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <iostream>
#include <fstream>

using namespace std;

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

const int   POW = 17;
const int MAXN = 250000;

int mat[POW][MAXN];

int main()
{
    bool ok;
    int n, m, i, j, pow, x, ind, nr_stramos, putere;
    in>>n>>m;
    i = 0;
    for( j = 1; j <= n; j++ ){
      in>>mat[i][j];
    }
    pow = 1;
    putere = 1;
    while( putere * 2 <= n ){
      putere = putere * 2;
      for( j = 1; j <= n; j++ ){
        mat[pow][j] = mat[pow - 1][ mat[ pow - 1 ][j]];
      }
      pow++;
    }

    for( i = 0; i < m; i++ ){
      in>>x>>ind;
      ok = 0;

      for( pow = POW; pow >= 0; pow-- ){
        if( 1 << pow <= ind ){
          x = mat[pow][x];
          ind = ind - ( 1 << pow );
        }
      }
      out<<x<<'\n';
    }
    return 0;
}