Submission #1258154

#TimeUsernameProblemLanguageResultExecution timeMemory
1258154altern23Nile (IOI24_nile)C++20
67 / 100
2095 ms6584 KiB
#include "nile.h" #include <bits/stdc++.h> using namespace std; #define ll long long #define pii pair<ll, ll> #define fi first #define sec second const ll INF = 1e18; vector<long long> calculate_costs(vector<int> W, vector<int> A, vector<int> B, std::vector<int> E) { int Q = (int)E.size(), N = (int)W.size(); vector<pii> objects; for(int i = 0; i < N; i++) objects.push_back({W[i], B[i] - A[i]}); sort(objects.begin(), objects.end()); vector<long long> R(Q, 0); for(int i = 0; i < Q; i++){ ll ans = 0; for(int j = 0; j < N; j++) ans += A[j]; vector<ll> dp(N + 5, INF); dp[0] = 0; for(int j = 1; j < N; j++){ dp[j] = dp[j - 1]; if(objects[j].fi - objects[j - 1].fi <= E[i]) dp[j] = min(dp[j], (j == 1 ? 0LL : dp[j - 2]) + objects[j].sec + objects[j - 1].sec); if(j >= 2 && objects[j].fi - objects[j - 2].fi <= E[i]) dp[j] = min(dp[j], (j == 2 ? 0LL : dp[j - 3]) + objects[j].sec + objects[j - 2].sec); } R[i] = dp[N - 1] + ans; } return R; }
#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...