#include <bits/stdc++.h>
using namespace std;
vector<long long> calculate_costs(
vector<int> W, vector<int> A,
vector<int> B, vector<int> E) {
int N = W.size();
int Q = E.size();
vector<tuple<int, int, int>> artifacts(N);
for (int i = 0; i < N; ++i) {
artifacts[i] = make_tuple(W[i], A[i], B[i]);
}
// Sort artifacts by weight ascending first
sort(artifacts.begin(), artifacts.end());
// Results for each D in E
vector<long long> results(Q);
for (int q = 0; q < Q; ++q) {
int D = E[q];
// DP[i] stores the minimum cost for sending items from 0 to i.
vector<long long> dp(N, LLONG_MAX - 1);
dp[0] = get<1>(artifacts[0]); // Base case: Send 0 on its own.
for (int i = 1; i < N; ++i) {
// Case 1: send artifact i alone
dp[i] = get<1>(artifacts[i]) + dp[i-1];
// Case 2: try to pair i with i-1
if (get<0>(artifacts[i]) - get<0>(artifacts[i-1]) <= D)
{
long long costLeft = i-2 >= 0 ? dp[i-2] : 0;
long long costFromPairingWithNextOne = get<2>(artifacts[i]) + get<2>(artifacts[i-1]) + costLeft;
dp[i] = min(dp[i], costFromPairingWithNextOne);
}
// Case 3: Try to pair i with i-2
if ((get<0>(artifacts[i]) - get<0>(artifacts[i-2]) <= D) && (i-2 >= 0))
{
long long costLeftFromIMinus3 = (i-3 >= 0) ? dp[i-3] : 0;
long long BCostI = get<2>(artifacts[i]);
long long ACostI1 = get<1>(artifacts[i-1]);
long long BCostI2 = get<2>(artifacts[i-2]);
long long costFromPairingWithIMinus2 = BCostI + ACostI1 + BCostI2 + costLeftFromIMinus3;
dp[i] = min(dp[i], costFromPairingWithIMinus2);
}
}
results[q] = dp[N-1];
}
return 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... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |