Cod sursa(job #3227280)

Utilizator dariadragomir23Dragomir Daria dariadragomir23 Data 29 aprilie 2024 11:23:30
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
 #include <fstream>
 #include <iostream>
 #include <queue>
 #include <vector>

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

 int tata[250005], str[250005][20], lg[250005], put[20];

 int main() {
     int n, m, i, j;
     fin >> n >> m;
     put[0] = 1;
     for (i = 1; i < 20; i++)
         put[i] = put[i-1] * 2;
     for (i = 2; i <= n; i++)
         lg[i] = lg[i/2] + 1;
     for (i = 1; i <= n; i++) {
         fin>>tata[i];
         str[i][0] = tata[i];
     }
     for (j = 1; j < 20; j++)
         for (i = 1; i <= n; i++)
             str[i][j] = str[str[i][j-1]][j-1];
     while (m--) {
         int q, p;
         fin >> q >> p;
         while (p > 0) {
             int x = lg[p];
             q = str[q][x];
             p = p - put[x];
         }
         fout<<q<<'\n';
     }
     return 0;
 }