제출 #1245471

#제출 시각아이디문제언어결과실행 시간메모리
1245471CyberCow나일강 (IOI24_nile)C++20
67 / 100
2094 ms5564 KiB
#include "nile.h" #include <bits/stdc++.h> using namespace std; using ll = long long; ll dp[100005]; vector<long long> calculate_costs(vector<int> W, vector<int> A, vector<int> B, vector<int> E) { int Q = (int)E.size(); vector<long long> R; vector<pair<int, pair<int, int>>> qaq; for (int i = 0; i < A.size(); i++) { qaq.push_back({W[i], {A[i], B[i]}}); } sort(qaq.begin(), qaq.end()); for (int i = 0; i < A.size(); i++) { W[i] = qaq[i].first; A[i] = qaq[i].second.first; B[i] = qaq[i].second.second; } for(auto g: E) { for (int i = 0; i < A.size(); i++) { dp[i] = 0; } dp[0] = A[0]; for (int i = 1; i < A.size(); i++) { dp[i] = dp[i - 1] + A[i]; if(i >= 2 && W[i] - W[i - 1] <= g) dp[i] = min(dp[i], dp[i - 2] + B[i] + B[i - 1]); else if(i == 1 && W[i] - W[i - 1] <= g) dp[i] = min(dp[i], ll(B[i]) + B[i - 1]); if(i >= 3 && W[i] - W[i - 2] <= g) dp[i] = min(dp[i], dp[i - 3] + B[i] + B[i - 2] + A[i - 1]); else if(i == 2 && W[i] - W[i - 2] <= g) dp[i] = min(dp[i], ll(B[i]) + B[i - 2] + A[i - 1]); } R.push_back(dp[A.size() - 1]); } 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...