제출 #763987

#제출 시각아이디문제언어결과실행 시간메모리
763987t6twotwo모임들 (IOI18_meetings)C++17
19 / 100
5561 ms7268 KiB
#include "meetings.h" #include <bits/stdc++.h> using namespace std; using ll = long long; constexpr ll inf = 1e18; vector<ll> minimum_costs(vector<int> H, vector<int> L, vector<int> R) { int N = H.size(), Q = L.size(); vector<ll> ans(Q, inf); for (int i = 0; i < Q; i++) { vector<int> stk; vector<ll> A(N); for (int j = L[i]; j <= R[i]; j++) { while (!stk.empty() && H[stk.back()] <= H[j]) { stk.pop_back(); } if (stk.empty()) { A[j] = 1LL * H[j] * (j - (L[i] - 1)); } else { A[j] = 1LL * H[j] * (j - stk.back()) + A[stk.back()]; } stk.push_back(j); } stk.clear(); vector<ll> B(N); for (int j = R[i]; j >= L[i]; j--) { while (!stk.empty() && H[stk.back()] <= H[j]) { stk.pop_back(); } if (stk.empty()) { B[j] = 1LL * H[j] * ((R[i] + 1) - j); } else { B[j] = 1LL * H[j] * (stk.back() - j) + B[stk.back()]; } stk.push_back(j); } for (int j = L[i]; j <= R[i]; j++) { ans[i] = min(ans[i], A[j] + B[j] - H[j]); } } return ans; }
#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...