Submission #1151559

#TimeUsernameProblemLanguageResultExecution timeMemory
1151559Jawad_Akbar_JJBikeparking (EGOI24_bikeparking)C++20
100 / 100
150 ms16876 KiB
#include <iostream> #include <set> using namespace std; int a[300005], b[300005]; int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int n, Ans = 0; cin>>n; set<pair<int,int>> st; for (int i=1;i<=n;i++) cin>>a[i], st.insert({i, a[i]}), a[i] = 0; for (int i=1;i<=n;i++) cin>>b[i]; for (int i=1, ptr = 1;i<=n;){ if (st.size() > 0 and (*begin(st)).first < i and b[i]){ auto u = prev(st.upper_bound({i, 0})); auto [id, cap] = *u; int k = min(cap, b[i]); b[i] -= k, Ans += k; if (cap - k) st.insert({id, cap - k}); i += !b[i]; st.erase(u); } else i++; } for (auto [i, j] : st) a[i] = j; for (int i=1;i<=n;i++) Ans -= b[i] - min(a[i], b[i]); cout<<Ans<<'\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...