제출 #1172712

#제출 시각아이디문제언어결과실행 시간메모리
1172712uranhishigBikeparking (EGOI24_bikeparking)C++20
9 / 100
75 ms5064 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; for (int i = n - 2; i >= 0; i--) { while (int x = *upper_bound(b.begin(), b.end(), a[i]) and x != n and b[x] > 0 and i < x) { int mn = min(a[i], b[x]); a[i] -= mn; b[x] -= mn; ans += mn; // cout << i << ' ' << x << ' ' << a[i] << ' ' << b[x]<<' ' << ans << ' '<< mn << endl; } } 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...