Mai intai trebuie sa te autentifici.
Cod sursa(job #1547604)
Utilizator | Data | 9 decembrie 2015 17:46:28 | |
---|---|---|---|
Problema | Stramosi | Scor | 80 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.95 kb |
#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;
}