제출 #1190125

#제출 시각아이디문제언어결과실행 시간메모리
1190125lokesh0110Fountain (eJOI20_fountain)C++17
30 / 100
1594 ms2076 KiB
#include <bits/stdc++.h>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n, q;
    cin >> n >> q;

    vector<int> D(n + 1), C(n + 1), next_larger(n + 1, 0);

    for (int i = 1; i <= n; ++i) {
        cin >> D[i] >> C[i];
    }

    // Preprocess next_larger using a monotonic stack
    stack<int> stk;
    for (int i = n; i >= 1; --i) {
        while (!stk.empty() && D[stk.top()] <= D[i]) stk.pop();
        if (!stk.empty()) next_larger[i] = stk.top();
        stk.push(i);
    }

    while (q--) {
        int r, v;
        cin >> r >> v;

        int cur = r;
        while (true) {
            if (v <= C[cur]) {
                cout << cur << '\n';
                break;
            }
            v -= C[cur];
            if (next_larger[cur] == 0) {
                cout << 0 << '\n';
                break;
            }
            cur = next_larger[cur];
        }
    }

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...