Pagini recente » Cod sursa (job #1210136) | Cod sursa (job #2631691) | Cod sursa (job #526664) | Cod sursa (job #2696592) | Cod sursa (job #227828)
Cod sursa(job #227828)
#include<stdio.h>
#include <string.h>
#define nmax 1<<18
FILE *f=fopen("stramosi.in","r"),*g=fopen("stramosi.out","w");
int t[18][nmax];
#define Dim 10000
#define buff fread(buf,1,Dim,f), poz=0
int poz;
char buf[Dim];
inline int cit()
{
int ret=0;
while (buf[poz] < 48) if (++poz == Dim) buff;
while (buf[poz] > 47)
{
ret = ret*10 + buf[poz] - 48;
if (++poz == Dim) buff;
}
return ret;
}
int main()
{
buff;
int n,m;
n=cit();m=cit();
for(int i=1;i<=n;++i)
t[0][i] = cit();
for (int i=1;(1<<i) <= n;++i)
for (int j=1;j<=n;++j)
t[i][j] = t[i-1][t[i-1][j]];
for (int i=1;i<=m;++i)
{
int a,b;
a=cit();b=cit();
#define W(i) if ((1<<i)&b) a = t[i][a];
W(0)W(1)W(2)W(3)W(4)W(5)W(6)W(7)W(8)W(9)W(10)W(11)W(12)W(13)W(14)W(15)W(16)W(17)W(18)
fprintf(g,"%d\n",a);
}
return 0;
}