Cod sursa(job #1045651)
| Utilizator | Data | 1 decembrie 2013 20:42:56 | |
|---|---|---|---|
| Problema | Stramosi | Scor | 90 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.64 kb |
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
int str[20][250001];
int main()
{
ifstream f("stramosi.in");
ofstream g("stramosi.out");
int n,m,i,j,p,q,maxi;
f>>n>>m;
for(i=1;i<=n;i++)
f>>str[0][i];
i=1;
while((1<<i)<=n)
{
for(j=1;j<=n;j++)
str[i][j]=str[i-1][str[i-1][j]];
i++;
}
for(i=1;i<=m;i++)
{
f>>p>>q;
while(q>0)
{
maxi=log2(q);
p=str[maxi][p];
q=q-(1<<maxi);
}
g<<p<<'\n';
}
f.close();
g.close();
return 0;
}
