Cod sursa(job #1502053)

Utilizator andrei_diaconuAndrei Diaconu andrei_diaconu Data 14 octombrie 2015 08:21:43
Problema Stramosi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <fstream>
#include <vector>

#define NMax 250010

using namespace std;

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

int n, m, elem, d[20][NMax];
//vector G[NMax], query[NMax];

int main()
{
    f>>n>>m;

    for (int i=1; i<=n; i++)
        f>>d[0][i];

    /*for (int i=1; i<=n; i++) {
        f>>elem;

        G[i].push_back(elem, i);
    }*/

    int lg = 1, p=1;
    for (int i=1; i*2 <= n; i++)
        lg *= 2;

    for (int i=1; i<=lg; i++)
        for (int j=1; j<=n; j++)
            d[i][j] = d[i-1][d[i-1][j]];

    int p, q;
    for (int i=1; i<=m; i++) {
        f>>p>>q;
        int x=1;

        while (p != 0) {
            if ((p & 1) == 1)
                q=d[x][q];

            p/=2;
            x++;
        }

        g<<q<<"\n";
    }

    return 0;
}