Pagini recente » Cod sursa (job #357883) | Cod sursa (job #724207) | Cod sursa (job #167145) | Cod sursa (job #2229036) | Cod sursa (job #1547604)
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
ifstream f("stramosi.in");
ofstream g("stramosi.out");
long a[21][250001], i, j, n, m, k, p, q;
void dfs(int pas, int q) {
if (pas!=0)
dfs(pas-1, a[0][q]);
else
g<<q<<"\n";
}
int main()
{
f>>n>>m;
int l;
for (i=1;i<=n;i++)
f>>a[0][i];
for (i=1;i<=18;i++)
for (j=1;j<=n;j++)
a[i][j] = a[i-1][a[i-1][j]];
for (i=1;i<=m;i++) {
f>>q>>p;
/* while (p!=0) {
l = log2(p);
q = a[l][q];
p = p - pow (2, l);
}*/
if (log2(p) == (int) log2(p))
g<<a[(int)log2(p)][q]<<"\n";
else {
while (p>0) {
l = log2(p);
q = a[l][q];
p = p - pow(2,l);
}
g<<q<<"\n";
}
}
//g<<q<<"\n";
//}
return 0;
}