Pagini recente » Cod sursa (job #1647571) | Cod sursa (job #1785686) | Cod sursa (job #2519938) | Cod sursa (job #480139) | Cod sursa (job #2754129)
//
// main.cpp
// Stramosi
//
// Created by Mara Dascalu on 21/05/2021.
//
#include <iostream>
#include <fstream>
using namespace std;
ifstream input("stramosi.in");
ofstream output("stramosi.out");
const int n_max = 250000;
int n, m, ordin, nod, stramosi[19][n_max+1];
void aflaStramosi()
{
int range = 2;
for (int i = 1; range <= n; i++)
{
range *= 2;
// cout<<i<<" "<<range<<" "<<n<<"\n";
for (int j = 1; j <= n; j++)
stramosi[i][j] = stramosi[i-1][stramosi[i-1][j]];
}
}
int gasesteStramosi (int nod, int ordin)
{
int putere, idx, temp;
temp = nod;
while (ordin){
putere = 1; idx = 0;
while (putere*2 <= ordin)
{
putere *= 2;
idx++;
}
temp = stramosi[idx][temp];
ordin -= putere;
}
return temp;
}
int main(){
input>>n>>m;
for (int i = 1; i <= n; i++)
input>>stramosi[0][i];
aflaStramosi();
for (int i = 1; i <= m; i++)
{
input>>nod>>ordin;
output<<gasesteStramosi(nod, ordin)<<"\n";
}
}