Mai intai trebuie sa te autentifici.
Cod sursa(job #2472753)
Utilizator | Data | 12 octombrie 2019 20:46:34 | |
---|---|---|---|
Problema | Stramosi | Scor | 0 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.85 kb |
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
int main()
{
int n, m, q, p, i, j;
ifstream f("stramosi.in");
ofstream g("stramosi.out");
f >> n >> m;
int l = round(log2(n));
int a[l+1][n+1];
for (j = 0; j <= n; j++)
{
for(i = 0; i <= l; i++)
a[i][j] = 0;
}
for (j = 1; j <= n; j++)
{
f >> a[1][j];
i = 2;
while (i <= l)
{
a[i][j] = a[i-1][a[i-1][j]];
i++;
}
}
while (m > 0)
{
f >> q >> p;
while (p > 1)
{
int exp = round(log2(p));
q = a[exp][q];
p = p >> exp;
}
if (p == 0)
g << a[1][q] << endl;
else
g << a[p][q] << endl;
m--;
}
}