Cod sursa(job #1042955)

Utilizator alexsimi66FMI Simandi Alexandru alexsimi66 Data 27 noiembrie 2013 20:25:16
Problema Stramosi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.61 kb
#include<iostream>
#include<fstream>
#include<string.h>
#define N 300005
long a[18][N];
int main ()
{

long n,m,i,x,y,j,p,q;
memset(a,0,sizeof(a));  //umplu matricea cu 0
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
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]]; //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;
 }
return 0;
}