Cod sursa(job #3228759)

Utilizator raizoSoare Antonio raizo Data 10 mai 2024 23:41:22
Problema Stramosi Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.35 kb
#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";
    }
    
}