#include "nile.h"
#include <bits/stdc++.h>
using namespace std;
#define sig signed
#define int long long
#define arr array
#define vec vector
#define pii pair<int, int>
#define fir first
#define sec second
const int N = 1e5 + 5, INF = 1e18;
int n;
arr<pii, N> a;
arr<arr<int, 2>, N> dp;
int slv(int d) {
for (int i = 1; i <= n; i++) {
for (int b : {0, 1}) {
dp[i][b] = (b == 1) ? a[i].sec : -INF;
for (int j = 1; j <= i - 1; j++) {
if (b == 0 && a[i].fir - a[j].fir > d) continue;
dp[i][b] = max(dp[i][b], dp[j][!b] + a[i].sec);
}
}
}
int ans = 0;
for (int i = 1; i <= n; i++)
ans = max(ans, dp[i][0]);
return ans;
}
vec<int> calculate_costs(vec<sig> _ps, vec<sig> _fl, vec<sig> _pr, vec<sig> _qr) {
n = _ps.size();
int sm = 0;
for (int i = 1; i <= n; i++) {
a[i] = {_ps[i - 1], _fl[i - 1] - _pr[i - 1]};
sm += _fl[i - 1];
}
sort(a.begin() + 1, a.begin() + n + 1);
// for (int i = 1; i <= n; i++)
// cout << a[i].fir << " " << a[i].sec << '\n';
vec<int> ans;
for (int d : _qr)
ans.push_back(sm - slv(d));
return ans;
}
# | 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... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |