Cod sursa(job #2071981)

Utilizator WebDesignbyTMGhiorghiu Ioan-Viorel WebDesignbyTM Data 21 noiembrie 2017 11:14:28
Problema Stramosi Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#define DM 250001
#define x first
#define y second
#include <fstream>
#include <map>
using namespace std;

ifstream fi ("stramosi.in");
ofstream fo ("stramosi.out");
int n, m, p, q, v[DM];
map <pair <int, int>, int> mp;

int findp(pair <int, int> a)
{
    if (a.x == 1)
        return v[a.y];
    if (mp.find(a) != mp.end())
        return mp[a];
    return mp[a] = findp({a.x - 1, v[a.y]});
}

int main()
{
    fi >> n >> m;
    for (int i = 1; i <= n; ++i)
        fi >> v[i];
    for (int i = 1; i <= m; ++i)
    {
        fi >> q >> p;
        fo << findp({p, q}) << '\n';
    }
    return 0;
}