Submission #1172724

#TimeUsernameProblemLanguageResultExecution timeMemory
1172724uranhishigBikeparking (EGOI24_bikeparking)C++20
9 / 100
1095 ms4936 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define vi vector<int> #define ff first #define ss second #define pb push_back #define all(a) (a).begin(),(a).end() #define rep(i, n) for(int i = 0; i < (n); i++) #define rep1(i, n) for(int i = 1; i <= (n); i++) const int mod = 1e9 + 9; const int mx = 3e5 + 5; signed main() { int n; cin >> n; vector<int> a(n); bool ok = true; int xx; for (int i = 0; i < n; i++) { cin >> a[i]; xx = a[i]; if (i > 0) { if (a[i] != a[0]) ok = false; } } vector<int> b(n); for (int i = 0; i < n; i++) { cin >> b[i]; if (i > 0) { if (b[i] != b[0]) ok = false; if (a[i] != b[i]) ok = false; } } if (ok) { if (n < 3) { cout << '0'; return 0; } cout << (n - 2) * xx; return 0; } int ans = 0; set<int> st; for (int i = 0; i < n; i++) { st.insert(i); } for (int i = n - 2; i >= 0; i--) { while (a[i] > 0) { auto x = upper_bound(b.begin(), b.end(), a[i]); if (b[*x] == 0) { st.erase(*x); } int mn = min(a[i], b[*x]); a[i] -= mn; b[*x] -= mn; ans += mn; } } for (int i = 0; i < n; i++ ) { int t = min(a[i], b[i]); a[i] -= t; b[i] -= t; } for (int i = 0; i < n; i++) { if (b[i] > 0) { ans -= b[i]; } } cout << ans; return 0; }
#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...