제출 #1172700

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