Cod sursa(job #1367214)

Utilizator Denisa13Stefan Denisa Denisa13 Data 1 martie 2015 18:07:38
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <iostream>
#include <vector>
#include <fstream>

using namespace std;

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

int stiva[250005], index[250005], rang[350005], raspuns[350005];
vector <int> G[250005], qind[250005];

void query(int nod)
{
    for(int i=0;i<qind[nod].size();i++)
        if(index[nod]>=rang[qind[nod][i]])
            raspuns[qind[nod][i]]=stiva[index[nod]-rang[qind[nod][i]]];
        else raspuns[qind[nod][i]]=0;
}

void dfs(int nod)
{
    stiva[index[nod]]=nod;
    query(nod);
    for(int i=0;i<G[nod].size();i++)
    {
       index[G[nod][i]]=index[nod]+1;
       dfs(G[nod][i]);
    }
}

int main()
{
    int i,j,x,n,m,q;
    f>>n>>m;
    for(i=1;i<=n;i++)
    {
        f>>x;
        G[x].push_back(i);
    }
    for(i=1;i<=m;i++)
    {
        f>>q>>rang[i];
        qind[q].push_back(i);
    }
    dfs(0);
    for(i=1;i<=m;i++)
        g<<raspuns[i]<<'\n';
    return 0;
}