Submission #1166788

#TimeUsernameProblemLanguageResultExecution timeMemory
1166788hamzabcBikeparking (EGOI24_bikeparking)C++20
44 / 100
34 ms3912 KiB
#include <bits/stdc++.h> using namespace std; #define all(x) x.begin(), x.end() #define mod 1000000007 #define sp << " " << #define endl << '\n' int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int N; cin >> N; int ret = 0; vector<int> slots(N); vector<int> customers(N), customers2(N); for (int i = 0; i < N; i++){ cin >> slots[i]; } for (int i = 0; i < N; i++){ cin >> customers[i]; } int o = N - 1; for (int i = N - 1; i >= 0; i--){ o = min(o, i); while (customers[i] && o >= 0){ if (i == o){ customers2[i] += min(slots[i], customers[i]); if (slots[i] == customers2[i]) o--; if (customers2[i] == customers[i]) break; continue; } if (slots[o] >= customers[i]){ ret += customers[i]; slots[o] -= customers[i]; customers[i] = 0; }else{ ret += slots[o]; customers[i] -= slots[o]; slots[o] = 0; o--; } } if (o < 0 && customers[i]){ customers2[i] += customers[i]; } } o = N - 2; for (int i = N - 1; i >= 0; i--){ o = min(o, i - 1); while (customers[i] && o >= 0){ if (slots[o] >= customers[i]){ ret += customers[i]; slots[o] -= customers[i]; customers[i] = 0; }else{ ret += slots[o]; customers[i] -= slots[o]; slots[o] = 0; o--; } } if (o < 0 && customers[i]){ ret -= max(0, customers[i] - slots[i]); slots[i] = max(0, slots[i] - customers[i]); customers[i] = 0; } } cout << ret; }
#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...