Cod sursa(job #984089)

Utilizator Impaler_009Mihai Nitu Impaler_009 Data 13 august 2013 15:06:57
Problema Stramosi Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <fstream>
#include <cmath>
#define maxn 250001
#define maxlogn 18

using namespace std;

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

int t[maxn][maxlogn],logs[maxn];
int n,m,Q,P;

int main()
{
    fin>>n>>m;
    for (int i=1; i<=n; ++i) fin>>t[i][0];

    logs[1]=0;
    for (int i=2; i<=n; ++i) logs[i] = logs[i>>1]+1;

    for (int j=1; j<=logs[n]; ++j)
    {
        for (int i=1; i<=n; ++i)
        {
            t[i][j] = t[t[i][j-1]][j-1];
        }
    }

    for (int i=1; i<=m; ++i)
    {
        fin>>Q>>P;
        for (int j=logs[P]; j>=0; --j)
            if ((1<<j)&P) Q = t[Q][j];
        fout<<Q<<"\n";
    }
}