Cod sursa(job #1847526)

Utilizator roxanastRoxana Stiuca roxanast Data 14 ianuarie 2017 18:15:08
Problema Stramosi Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <fstream>
#include <vector>
#define NMAX 250100
#define JMAX 25
using namespace std;
int n,m,i,j,x,y,t[NMAX],p[NMAX][JMAX],log2[NMAX];

ifstream f("stramosi.in");
ofstream g("stramosi.out");

int main()
{
    f>>n>>m;

    log2[1]=0;
    for(i=2;i<=n;i++)
        log2[i]=1+log2[i/2];

    for(i=1;i<=n;i++){
        f>>x;
        t[i]=p[i][0]=x;
    }
    for(j=1;(1<<j)<n;j++)
        for(i=1;i<=n;i++)
        p[i][j]=p[p[i][j-1]][j-1];

    for(i=1;i<=m;i++){
        f>>x>>y;

        j=log2[y];
        while(y){
            if(y>=(1<<j)){
                x=p[x][j];
                y-=1<<j;
                j=log2[y];
            }else
                j--;
        }
        g<<x<<'\n';
    }
    return 0;
}