Submission #1297640

#TimeUsernameProblemLanguageResultExecution timeMemory
1297640Jawad_Akbar_JJFountain (eJOI20_fountain)C++20
100 / 100
86 ms9416 KiB
#include <iostream> #include <vector> using namespace std; const int N = 1<<17; int d[N], c[N], pre[N], Ans[N + N]; vector<pair<int,int>> Vec[N]; int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); int n, m; cin>>n>>m; for (int i=1;i<=n;i++) cin>>d[i]>>c[i]; for (int i=1, r, v;i<=m;i++){ cin>>r>>v; Vec[r].push_back({i, v}); } vector<int> stk = {0, 0, 0}; for (int i=n;i>=1;i--){ while (stk.size() > 3 and d[stk.back()] <= d[i]) stk.pop_back(); pre[i] = pre[stk.back()] + c[i]; stk.push_back(i); for (auto [id, vl] : Vec[i]){ int l = 0, r = stk.size() - 1; while (l + 1 < r){ int mid = (l + r) / 2; if (pre[i] - pre[stk[mid]] < vl) r = mid; else l = mid; } Ans[id] = stk[r]; } } for (int i=1;i<=m;i++) cout<<Ans[i]<<' '; cout<<'\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...