Submission #1223362

#TimeUsernameProblemLanguageResultExecution timeMemory
1223362khomeFountain (eJOI20_fountain)C++20
30 / 100
1594 ms1864 KiB
#include <bits/stdc++.h>
using namespace std;
// #define int long long

// int check(int pos, int sum) {

// }

void solve(){
    int n, q; cin >> n >> q;
    vector<pair<int, int>> vp(n+1); // diametr & capacity
    vector<pair<int, int>> gr(n+1, {0, 1e9}); // child & cost
    for (int i = 1; i <= n; i++) {
        cin >> vp[i].first >> vp[i].second;
        gr[i].second = vp[i].second;
        for (int j = 1; j < i; j++){
            if (gr[j].first == 0 && vp[j].first < vp[i].first) {
                gr[j] = {i, vp[j].second};
            }
        }
    }
    
    auto check = [&](int pos, int sum) -> int {
        while (pos != 0){
            sum-=gr[pos].second;
            if (sum <= 0) break;
            pos = gr[pos].first;
        }
        return pos;
    };

    for (int i = 0; i < q; i++){
        int ri, vi; cin >> ri >> vi;
        cout << check(ri, vi) << endl;
        // auto j = lower_bound(prefs[ri].begin(), prefs[ri].end(), vi);
        // int x = distance(prefs[ri].begin(), j);
        // cout << indx[ri][x] << endl;
    }
    // vector<int> v;
    // v = {10, 18, 27};
    // auto i = upper_bound(v.begin(), v.end(), 25);
    // int x = distance(v.begin(), i-1);

    // cout << gr[6].first << endl;
    // for (int i = 1; i <= n;  i++) cout << i << ": " << gr[i].first << ' '  << gr[i].second << endl;
}




signed main() {
    ios_base::sync_with_stdio(0);
    // freopen("input.txt", "r", stdin);
    // freopen("output.txt", "w", stdout);
	int t = 1; 
    // cin >> t;
    while (t--){solve();}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...