Cod sursa(job #1080934)

Utilizator Aleks10FMI - Petrache Alex Aleks10 Data 12 ianuarie 2014 23:39:08
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <iostream>
#include <fstream>

using namespace std;
int n,m,i,k,q,p,lin,v[20][250001];

int log2(int nr){
    int put=1;
    int n=0;
    while(put<=nr){
        put=put<<1;
        n++;
    }
    return n-1;
}

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

    f>>n>>m;
    for(i=1;i<=n;i++)
        f>>v[0][i];
    for(k=1;(1<<k)<=n;k++)
    {
        for(i=1;i<=n;i++) {
            v[k][i]=v[k-1][v[k-1][i]];
        }
        //cout<<endl;
    }

    for(i=0;i<m;i++){
        f>>q>>p;
        while(p!=0){
            lin=log2(p);
            q=v[lin][q];
            if(q==0)
                break;
            else
                p-=(1<<lin);
        }
        g<<q<<'\n';
    }
    return 0;
}