Cod sursa(job #1042942)

Utilizator alexsimi66FMI Simandi Alexandru alexsimi66 Data 27 noiembrie 2013 20:07:27
Problema Stramosi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.6 kb
#include<iostream>
#include<fstream>
#include<string.h>
#include<stdio.h>
#define N 300005
long a[18][N];
int main ()
{
 fstream fin("stramosi.in",ios::in);
 fstream fout("stramosi.out",ios::out);
 long n,m,i,x,y,j,p,q;
 memset(a,0,sizeof(a));
 fin>>n>>m;

 for (i=1;i<=n;i++)
    fin>>a[0][i];

 for (j=1;j<=17;j++)
    for (i=1;i<=n;i++)
        a[j][i]=a[j-1][a[j-1][i]]; //caut stramos

 for (i=1;i<=m;i++)
 {fin>>p>>q;
  while(q)
  { x=q;
    y=0;
    while(x>1)
    {
        x/=2;
        y++;
    }
   p=a[y][p];
   q-=1<<y;  //shiftez
  }
  fout<<p;
 }
return 0;
}