Cod sursa(job #1638336)

Utilizator VicktorVictor Teodor Stoian Vicktor Data 7 martie 2016 22:34:38
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <fstream>

using namespace std;

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

int n,m,dp[21][250005],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[0][i];

   for(p=1;!OK;p++){
        OK=1;
        for(int i=1;i<=n;i++){
            dp[p][i]=dp[p-1][dp[p-1][i]];
                if(dp[p][i])
                    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[nr][s];
            nr++;
            p<<=1;
        }
        fout<<s<<'\n';
    }
    return 0;
}