Cod sursa(job #1354222)

Utilizator Darius15Darius Pop Darius15 Data 21 februarie 2015 18:21:25
Problema Stramosi Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.6 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream f("stramosi.in");
ofstream g("stramosi.out");
int n,m,st[250001][19],i,x,y,j,lg[250001];
int gasire(int nc,int y)
{
    while(y>0)
    {
        nc=st[nc][lg[y]];
        y=y-(1<<lg[y]);
    }
        return nc;
}
int main()
{
   f>>n>>m;
   for (i=1;i<=n;i++)
    f>>st[i][0];
   for (j=1;(1<<j)<=n;j++)
        for (i=1;i<=n;i++)
        st[i][j]=st[st[i][j-1]][j-1];
    for (i=2;i<=n;i++)
        lg[i]=lg[i/2]+1;
   for (i=1;i<=m;i++)
   {
       f>>x>>y;
       g<<gasire(x,y)<<'\n';
   }
    return 0;
}