Pagini recente » Cod sursa (job #1174480) | Cod sursa (job #478424) | Cod sursa (job #397869) | Cod sursa (job #2103948) | Cod sursa (job #3228748)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("stramosi.in");
ofstream cout("stramosi.out");
vector<int> v;
vector<vector<int>> vec;
int n, m, p, q, x;
int stramos(int q, int p) {
if (vec[q].size() > p) { return vec[q][p]; }
else {
int cel_mai_indepartat_stramos = vec[q][vec[q].size() - 1] - 1;
int stramosi_ramasi = (p - (vec[q].size() - 1)) - 1;
if (cel_mai_indepartat_stramos == -1) {
return 0;
}
else {
int rez = stramos(cel_mai_indepartat_stramos, stramosi_ramasi);
int size_stramos = vec[cel_mai_indepartat_stramos].size();
int size_actual = vec[q].size();
for (int i = 0; i < size_stramos; i++) {
int stra = vec[cel_mai_indepartat_stramos][i];
vec[q].push_back(stra);
if (stra == 0) { break; }
}
return rez;
}
}
}
int main()
{
cin >> n >> m;
for (int i = 0; i < n; i++) {
vector<int> v;
cin >> x;
v.push_back(x);
vec.push_back(v);
}
for (int i = 0; i < m; i++) {
cin >> q >> p;
cout << stramos(q-1, p-1) << "\n";
}
}