답안 #1100497

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1100497 2024-10-14T06:05:19 Z Ryuga_ Feast (NOI19_feast) C++14
4 / 100
217 ms 11020 KB
/*For today, you happen to be the defeated. But what will you become tomorrow?*/
 
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
 
const int N = 300005;
const ll inf = (1ll << 60);
int arr[N], n, k;
array<ll, 2> dp[N][2];
 
array<ll, 2> f(ll c) {
    for(int i = 0; i <= n; i ++) {
        dp[i][0] = {0, 0};
        dp[i][1] = {-inf, 0};
    }
 
    for(int i = 1; i <= n; i ++) {
        dp[i][0] = dp[i - 1][0];
        dp[i][1] = {dp[i - 1][1][0] + (ll)arr[i], dp[i - 1][1][1]};
        array<ll, 2> cur = {dp[i - 1][0][0] + (ll)arr[i] - c, dp[i - 1][0][1] + 1};
        dp[i][1] = max(dp[i][1], cur);
        dp[i][0] = max(dp[i][0], dp[i][1]);
        
    }
    return dp[n][0];
}
void solve() {
    
    cin >> n >> k;
    for(int i = 1; i <= n; i ++) cin >> arr[i];    
    ll lo = -(1ll << 60), hi = (1ll << 60), ans = 0;
 
    while(lo <= hi) {
        ll mid = (lo + hi) / 2;
        array<ll, 2> yo = f(mid);
        if(yo[1] >= k) {
            ans = max(ans, yo[0] + k * mid);
            lo = mid + 1;
        }
        else {
            hi = mid - 1;
        }
    }
 
    cout << ans << '\n';
}
 
int32_t main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
        
    int t = 1;
    // cin >> t;
    
    while(t--){
        solve();
    }
 
    return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 200 ms 10832 KB Output is correct
2 Correct 199 ms 10832 KB Output is correct
3 Correct 207 ms 11020 KB Output is correct
4 Correct 210 ms 10844 KB Output is correct
5 Correct 194 ms 10832 KB Output is correct
6 Correct 200 ms 10960 KB Output is correct
7 Correct 217 ms 10824 KB Output is correct
8 Correct 206 ms 10832 KB Output is correct
9 Correct 192 ms 10832 KB Output is correct
10 Correct 209 ms 10848 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 108 ms 10832 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 163 ms 10824 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 2384 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 2384 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 2384 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 200 ms 10832 KB Output is correct
2 Correct 199 ms 10832 KB Output is correct
3 Correct 207 ms 11020 KB Output is correct
4 Correct 210 ms 10844 KB Output is correct
5 Correct 194 ms 10832 KB Output is correct
6 Correct 200 ms 10960 KB Output is correct
7 Correct 217 ms 10824 KB Output is correct
8 Correct 206 ms 10832 KB Output is correct
9 Correct 192 ms 10832 KB Output is correct
10 Correct 209 ms 10848 KB Output is correct
11 Incorrect 108 ms 10832 KB Output isn't correct
12 Halted 0 ms 0 KB -