Cod sursa(job #1042956)

Utilizator alexsimi66FMI Simandi Alexandru alexsimi66 Data 27 noiembrie 2013 20:25:50
Problema Stramosi Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include<iostream>
#include<fstream>
#include<string.h>
#define N 300005

using namespace std;

long a[18][N];
int main ()
{
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
long n,m,i,x,y,j,p,q;
memset(a,0,sizeof(a));  //umplu matricea cu 0

fin>>n>>m;

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

for (j=1;j<=17;j++)
    for (i=1;i<=n;i++)
        a[j][i]=a[j-1][a[j-1][i]]; //realizez matricea stramosilor indirecti

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<<endl;
 }
return 0;
}