이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
vector<int> a;
vector<ll> pf;
pair<ll, int> solve(ll cost){
vector<pair<ll, int>> dp(a.size());
pair<ll, int> maxval(0, 0);
for (int i=0; i<a.size(); i++){
dp[i] = max(i ? dp[i-1] : make_pair(0LL, 0),
make_pair(pf[i] - cost + maxval.first, maxval.second + 1));
maxval = max(maxval, make_pair(-pf[i] + dp[i].first, dp[i].second));
}
return dp.back();
}
signed main(){
cin.tie(0)->sync_with_stdio(0);
int n, k; cin >> n >> k;
a.resize(n);
for (int i=0; i<n; i++) cin >> a[i];
pf.resize(n);
for (ll i=0, p=0; i<n; i++){
p = pf[i] = p + a[i];
}
ll bl = 0, br = 1e15;
while (bl < br){
ll bm = (bl + br)>>1;
pair<ll, int> r = solve(bm);
if (r.second <= k) br = bm;
else bl = bm+1;
}
pair<ll, int> r = solve(bl);
cout << r.first + bl*r.second << "\n";
}
컴파일 시 표준 에러 (stderr) 메시지
feast.cpp: In function 'std::pair<long long int, int> solve(ll)':
feast.cpp:9:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
9 | for (int i=0; i<a.size(); i++){
| ~^~~~~~~~~
# | 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... |