Pagini recente » Cod sursa (job #1794633) | Cod sursa (job #2483890) | Cod sursa (job #1010364) | Cod sursa (job #2370729) | Cod sursa (job #1573361)
#include <stdio.h>
const int nmax=250001;
int str[18][nmax];///str[i][j]=stramosul lui j cu 2^i nivele mai sus
int main()
{
FILE *f,*f1;
int n,m,i,j,p,q;
f=fopen("stramosi.in","r");
fscanf(f,"%d%d",&n,&m);
for (i=1; i<=n; i++)
fscanf(f,"%d",&str[0][i]);
for (i=1; (1 << i) <= n; i++)
for (j=1; j <= n; j++)
str[i][j]=str[i-1][str[i-1][j]];
f1=fopen("stramosi.out","w");
for (i=1; i<=m; i++)
{
fscanf(f,"%d%d",&q,&p);
for (j=0; (1 << j) <= p; j++)
if ((p >> j) & 1)
q=str[j][q];
fprintf(f1,"%d\n",q);
}
fclose(f);
}