Pagini recente » Cod sursa (job #141917) | Cod sursa (job #2689536) | Cod sursa (job #2861947) | Cod sursa (job #847598) | Cod sursa (job #227832)
Cod sursa(job #227832)
#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]];
#define W(i) if ((1<<i)&b) a = t[i][a];
#define solve\
{int a,b;\
a=cit();b=cit();\
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);}
if (m%4 <= 1) solve
if (m%4 <= 2) solve
if (m%4 <= 3) solve
for (int i=m%4;i<=m;i+=4)
{
solve
solve
solve
solve
}
return 0;
}