#include "meetings.h"
#include <bits/stdc++.h>
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2")
#define int long long
#define pii pair<int,int>
#define vi vector<int>
#define ff first
#define ss second
#define sp << " " <<
#define all(x) x.begin(),x.end()
#define big(x) ((int)(x.size()))
using namespace std;
const int MOD = 1e9+7, LIM = 5e3+1, inf = 2e9;
vi h;
pii mn[LIM][LIM];
int dnq(int l,int r) {
if (l > r) return 0;
if (l == r) return h[l];
int p = mn[l][r].ss;
int he = mn[l][r].ff;
return min((p-l+1)*he+dnq(p+1,r),(r-p+1)*he+dnq(l,p-1));
}
vi minimum_costs(std::vector<signed> H, std::vector<signed> L,
std::vector<signed> R) {
h = vector<int>(all(H));
int n = big(H);
for (int i = 0;i<n;i++) {
mn[i][i] = {H[i],i};
for (int j = i+1;j<n;j++) {
if (h[j] > mn[i][j-1].ff) {
mn[i][j].ff = h[j];
mn[i][j].ss = j;
}
else mn[i][j] = mn[i][j-1];
}
}
vi answer(big(L));
for (int ii = 0;ii<big(L);ii++) {
answer[ii] = dnq(L[ii],R[ii]);
}
return answer;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |