Pagini recente » Cod sursa (job #763331) | Cod sursa (job #962262) | Cod sursa (job #2366416) | Cod sursa (job #3176390) | Cod sursa (job #227824)
Cod sursa(job #227824)
#include<stdio.h>
#define nmax 1<<18
int t[18][nmax];
int main()
{
FILE *f=fopen("stramosi.in","r"),*g=fopen("stramosi.out","w");
int n,m;
fscanf(f,"%d%d",&n,&m);
for(int i=1;i<=n;++i)
fscanf(f,"%d",&t[0][i]);
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;
fscanf(f,"%d%d",&a,&b);
#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;
}