Cod sursa(job #1638130)

Utilizator VicktorVictor Teodor Stoian Vicktor Data 7 martie 2016 21:26:33
Problema Stramosi Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <fstream>

using namespace std;

ifstream fin("stramosi.in");
ofstream fout("stramosi.out");

int n,m,dp[250000][21],nr=1;

int trans(int x){
    int p=1,s=0;
    while(p<=x){
        if(p&x)
            s+=p;
        p=p<<1;
    }
    return s;
}

int main()
{
    int x,y,p,OK=0,s;
    fin>>n>>m;
    for(int i=1;i<=n;i++)
        fin>>dp[i][0];

    for(p=1;!OK;p++){
            OK=1;
        for(int i=1;i<=n;i++)
            {
                dp[i][p]=dp[dp[i][p-1]][p-1];
                if(dp[i][p]!=0)
                OK=0;
            }
    }
    for(int i=1;i<=m;i++){
        fin>>y>>x;
        p=1;
        nr=0;
        s=y;
        while(p<=x && s!=0){
            if(p&x)
                s=dp[s][nr];
            nr++;
            p<<=1;
        }
        fout<<s<<'\n';
    }
    return 0;
}