Pagini recente » Cod sursa (job #1325175) | Cod sursa (job #2565879) | Cod sursa (job #1649671) | Cod sursa (job #295508) | Cod sursa (job #1669643)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("stramosi.in");
ofstream g("stramosi.out");
int Stram[20][250001];
int n,m;
int log;
void parcurgere()
{
}
void cautare(int memb,int strab)
{
int c,r;
c=strab/log;
r=strab%log;
int i;
int t=memb;
if(r!=0)
{
for(i=1;i<=c;i++)
t=Stram[log][t];
g<<Stram[r][t]<<'\n';
}
if(r==0)
{
for(i=1;i<c;i++)
t=Stram[log][t];
g<<Stram[log][t]<<'\n';
}
}
int detLog(int a)
{
int nrPasi=0;
while(a/2!=0)
{
a=a/2;
nrPasi++;
}
return nrPasi;
}
int main()
{
int i,j,k;
f>>n>>m;
for(i=1;i<=n;i++)
f>>Stram[1][i];
log=detLog(n);
for(i=2;i<=log;i++)
for(j=1;j<=n;j++)
Stram[i][j]=Stram[1][Stram[i-1][j]];
/*for(i=1;i<=log;i++)
{
for(j=1;j<=n;j++)
g<<Stram[i][j]<<'\t';
g<<'\n';
}*/
int memb;
int strab;
for(i=1;i<=m;i++)
{
f>>memb>>strab;
cautare(memb,strab);
}
f.close();
g.close();
return 0;
}