Cod sursa(job #3301661)
| Utilizator | Data | 28 iunie 2025 21:47:24 | |
|---|---|---|---|
| Problema | Stramosi | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.62 kb |
#include <fstream>
using namespace std;
int dp[20][250005]; ///dp[k][i] = al 2^k lea stramos al lui i
int main()
{
ifstream cin("stramosi.in");
ofstream cout("stramosi.out");
int n,q;
cin>>n>>q;
for(int i=1; i<=n; i++)
cin>>dp[0][i];
for(int k=1; k<20; k++)
{
for(int i=1; i<=n; i++)
dp[k][i]=dp[k-1][dp[k-1][i]];
}
while(q--)
{
int stra, nod;
cin>>nod>>stra;
for(int i=0; i<20; i++)
{
if((1<<i)&stra)
nod=dp[i][nod];
}
cout<<nod<<'\n';
}
return 0;
}
