Submission #1309384

#TimeUsernameProblemLanguageResultExecution timeMemory
1309384trigon나일강 (IOI24_nile)C++20
17 / 100
2095 ms6188 KiB
#include <bits/stdc++.h> using namespace std; struct Artifact { int weight, A, B; }; 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(); // Build artifacts vector<Artifact> artifacts(N); for (int i = 0; i < N; i++) { artifacts[i] = {W[i], A[i], B[i]}; } // Sort artifacts by weight sort(artifacts.begin(), artifacts.end(), [](const Artifact &a, const Artifact &b){ return a.weight < b.weight; }); // Answers vector vector<long long> answers(Q); for (int q_idx = 0; q_idx < Q; q_idx++) { int D = E[q_idx]; vector<long long> dp(N + 1, LLONG_MAX); dp[0] = 0; // cost of transporting 0 artifacts is 0 for (int i = 0; i < N; i++) { // Option 1: send i-th artifact alone dp[i + 1] = min(dp[i + 1], dp[i] + artifacts[i].A); // Option 2: pair i-th with (i+1)-th if allowed if (i + 1 < N && abs(artifacts[i + 1].weight - artifacts[i].weight) <= D) { dp[i + 2] = min(dp[i + 2], dp[i] + artifacts[i].B + artifacts[i + 1].B); } } answers[q_idx] = dp[N]; } return answers; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...