Cod sursa(job #1547517)

Utilizator ErikHEErik Henning ErikHE Data 9 decembrie 2015 17:14:14
Problema Stramosi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;

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

int a[250001][21], i, j, n, m, k, p, v[250001], q;

int main()
{
    f>>n>>m;
    int l;
    for (i=1;i<=n;i++)
        f>>a[0][i];
    for (i=1;i<=18;i++)
        for (j=1;j<=n;j++)
            a[i][j] = a[i-1][a[i-1][j]];
    for (i=1;i<=m;i++)  {
        f>>q>>p;
       /* while (p!=0)    {
            l = log2(p);
            q = a[l][q];
            p = p - pow (2, l);
        }*/
        if (log2(p) == (int) log2(p))
            g<<a[(int)log2(p)][q]<<"\n";
        else    {
            while (p!=0)    {
            l = log2(p);
            q = a[l][q];
            p = p - pow (2, l);
        }
        g<<q<<"\n";
        }
        //g<<q<<"\n";
    }

    return 0;
}