제출 #1231106

#제출 시각아이디문제언어결과실행 시간메모리
1231106bangan나일강 (IOI24_nile)C++20
67 / 100
2092 ms4068 KiB
#include "nile.h" #include <bits/stdc++.h> using namespace std; #define ll long long std::vector<long long> calculate_costs(std::vector<int> W, std::vector<int> A, std::vector<int> B, std::vector<int> E) { int N = W.size(); int Q = E.size(); vector<int> ord(N); iota(ord.begin(), ord.end(), 0); sort(ord.begin(), ord.end(), [&](int i, int j) { return W[i]<W[j]; }); vector<ll> ret; for (int d : E) { ll add = 0; for (int i=0; i<N;) { int j = i+1; while (j<N && W[ord[j]] - W[ord[j-1]] <= d) j++; ll sum = 0; for (int k=i; k<j; k++) sum += B[ord[k]]; ll ans = LLONG_MAX; if ((j-i) % 2 == 0) ans = sum; else { for (int k=i; k<j; k+=2) ans = min(ans, sum - B[ord[k]] + A[ord[k]]); for (int k = i+1; k<j; k+=2) if (W[ord[k+1]] - W[ord[k-1]] <= d) ans = min(ans, sum - B[ord[k]] + A[ord[k]]); } i=j; add += ans; } ret.push_back(add); } return ret; }
#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...