Pagini recente » Cod sursa (job #1971307) | Cod sursa (job #1606577) | Cod sursa (job #2184882) | Cod sursa (job #2870441) | Cod sursa (job #3228759)
#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);
if (q % 2 == 1) {
int stra_stramos = vec[cel_mai_indepartat_stramos][0];
int size_stramos = vec[stra_stramos].size();
vec[q].push_back(stra_stramos);
for (int i = 0; i < size_stramos; i++) {
int stra = vec[stra_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";
}
}