제출 #1275301

#제출 시각아이디문제언어결과실행 시간메모리
1275301nicolo_010모임들 (IOI18_meetings)C++20
19 / 100
3271 ms851968 KiB
#include <bits/stdc++.h> #include "meetings.h" using namespace std; using ll = long long; using pii = pair<int, int>; struct Node { int val, l, r; }; Node vd; struct SegTree { vector<Node> tree; SegTree(int n) { tree.assign(4*n, vd); } }; vector<ll> minimum_costs(vector<int> H, vector<int> L, vector<int> R) { vd.val = 0; vd.l = 0; vd.r = 0; int N = H.size(); int Q = L.size(); vector<vector<ll>> pref(N, vector<ll>(N, 0)); for (int i=0; i<N; i++) { pref[i][i] = H[i]; int mx=H[i]; for (int j=i-1; j>=0; j--) { mx = max(mx, H[j]); pref[i][j] = mx; } mx = H[i]; for (int j=i+1; j<N; j++) { mx = max(mx, H[j]); pref[i][j] = mx; } for (int j=1; j<N; j++) { pref[i][j] += pref[i][j-1]; } } vector<ll> ans(Q); for (int i=0; i<Q; i++) { ll mn = 1e18; for (int j=L[i]; j<=R[i]; j++) { ll left = (L[i]==0 ? 0 : pref[j][L[i]-1]); mn = min(pref[j][R[i]] - left, mn); } ans[i] = mn; } 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...