Cod sursa(job #1117685)

Utilizator vladvaldezVlad Dimulescu vladvaldez Data 23 februarie 2014 18:56:15
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.6 kb
#include <stdio.h>
#include <cmath>
using namespace std;
FILE *f=fopen("stramosi.in","r");
FILE *g=fopen("stramosi.out","w");


int i,j,lg,v[20][250004],n,m,p,q;

void rez()
{
 int i,j;
 for(j=1;j<=lg ;j++)
 for(i=1;i<=n;i++)
 v[j][i]=v[j-1][v[j-1][i]];
}

void query (int a,int b)
{
 int k;
 b<<=1;
 for(k=0;k<=lg && a;++k)
 {
   b>>=1;
   if (b&1)a=v[k][a];
 }
 fprintf(g,"%d\n",a);
}

int main()
{
fscanf(f,"%d%d",&n,&m);
for(i=1;i<=n;i++)
fscanf(f,"%d",&v[0][i]);

lg=log2(n);
rez();
for(i=1;i<=m;i++)
{
fscanf(f,"%d%d",&p,&q);
query(p,q);
}
fclose(g);
return 0;
}