제출 #1306090

#제출 시각아이디문제언어결과실행 시간메모리
1306090syanvuBikeparking (EGOI24_bikeparking)C++20
100 / 100
140 ms19220 KiB
#include <bits/stdc++.h> #define pb push_back #define SS ios_base::sync_with_stdio(0);cin.tie(nullptr);cout.tie(nullptr); #define int long long #define all(v) v.begin(),v.end() using namespace std; const int N = 1e4, inf = 1e9 + 1, mod = 998244353; void solve(){ int n; cin >> n; int x[n + 1], y[n + 1]; for(int i = 1; i <= n; i++){ cin >> x[i]; } for(int i = 1; i <= n; i++){ cin >> y[i]; } set<int> st; int ans = 0; for(int i = 1; i <= n; i++){ st.insert(i); } for(int i = 1; i <= n; i++){ auto it = st.lower_bound(i); if(it == st.begin()) continue; it--; int mn = min(x[*it], y[i]); x[*it] -= mn; y[i] -= mn; ans += mn; if(x[*it] == 0) st.erase(it); if(y[i] > 0) i--; } for(int i = n; i >= 1; i--){ auto it = st.lower_bound(i); if(it == st.end()) continue; int mn = min(x[*it], y[i]); x[*it] -= mn; y[i] -= mn; if(*it != i) ans -= mn; if(x[*it] == 0) st.erase(it); if(y[i] > 0) i++; } cout << ans; } signed main(){ SS // freopen("trains.in", "r", stdin); // freopen("trains.out", "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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...