Pagini recente » Cod sursa (job #1596387) | Cod sursa (job #780210) | Cod sursa (job #1511919) | Cod sursa (job #1526042) | Cod sursa (job #515215)
Cod sursa(job #515215)
#include <fstream>
using namespace std;
const char InFile[]="stramosi.in";
const char OutFile[]="stramosi.out";
const int MaxN=250111;
const int LogMaxN=18;
ifstream fin(InFile);
ofstream fout(OutFile);
/*numele_variabilei_asteai_trebuia_sa_fie_foarte_mic_dar_in_schimb_eu_am_facuto_foarte_mare_pentru_ca_cei_care_se_uita_pe_cod_sa_nu_poata_sa_urmareasca_codul*/
int N,M,P,Q,S[LogMaxN][MaxN],lg[MaxN];
int main()
{
fin>>N>>M;
for(register int i=1;i<=N;++i)
{
fin>>S[0][i];
}
for(register int i=2;i<=N;++i)
{
lg[i]=lg[i>>1]+1;
}
for(register int j=1;j<LogMaxN;++j)
{
for(register int i=1;i<=N;++i)
{
S[j][i]=S[j-1][S[j-1][i]];
}
}
for(register int i=0;i<M;++i)
{
fin>>Q>>P;
int l=lg[P];
int sol=Q;
while(P)
{
sol=S[l][sol];
P-=(1<<l);
l=lg[P];
}
fout<<sol<<"\n";
}
fin.close();
fout.close();
return 0;
}