Cod sursa(job #2468029)

Utilizator ViAlexVisan Alexandru ViAlex Data 5 octombrie 2019 11:52:21
Problema Stramosi Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.72 kb
#include<bits/stdc++.h>
using namespace std;

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


int val[250000];
int n,m;
int memo[250000][1000];

void read()
{
    in>>n>>m;
    for(int i=0; i<n; i++)
        in>>val[i];
}


int dfs(int curent,int len,int src)
{
    if(memo[curent][src-len])
        return memo[curent][src-len];


    int to_return=0;
    if(len==src)
        to_return=curent;
    else if(!val[curent-1])
        to_return= 0;
    else
        to_return=dfs(val[curent-1],len+1,src);

    memo[curent][src-len]=to_return;
    return to_return;
}

void solve()
{

    int a,b;
    for(int i=0; i<m; i++)
    {
        in>>a>>b;
        out<<dfs(a,0,b)<<'\n';
    }

}


int main()
{
    read();
    solve();
}