Cod sursa(job #395149)
Utilizator | Data | 12 februarie 2010 11:21:23 | |
---|---|---|---|
Problema | Stramosi | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.51 kb |
#include <fstream>
using namespace std;
#define doila(z) (1<<z)
#define nmax 3500010
int A[20][nmax];
int n,m,i,j,k,p,q;
int main()
{
ifstream f("stramosi.in");
ofstream g("stramosi.out");
f>>n>>m;
for(i=1;i<=n;i++)
f>>A[0][i];
for(i=1;doila(i)<=n;i++)
{
for(j=1;j<=n;j++)
A[i][j]=A[i-1][A[i-1][j]];
k=i;
}
for(k=1;k<=m;++k)
{
f>>p>>q;
while(p && q)
for(i=k;i>=0;i--)
if(doila(i)<=q && p && q)
{
p=A[i][p];
q-=doila(i);
}
g<<p<<endl;
}
return 0;
}