답안 #1100494

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1100494 2024-10-14T06:03:44 Z Ryuga_ Feast (NOI19_feast) C++17
4 / 100
32 ms 11136 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] = max(dp[i - 1][0], dp[i - 1][1]);
        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);
    }
    return max({dp[n][0], dp[n][1]});
}
void solve() {
    
    cin >> n >> k;
    for(int i = 1; i <= n; i ++) cin >> arr[i];    
    ll lo = 0, hi = 0, ans = 0;

    while(lo <= hi) {
        ll mid = (lo + hi) / 2;
        array<ll, 2> yo = f(mid);
        if(yo[1] >= k) {
            ans = yo[0] + k * mid;
            lo = mid + 1;
        }
        else {
            ans = yo[0] + yo[1] * mid;
            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 26 ms 10832 KB Output is correct
2 Correct 27 ms 11136 KB Output is correct
3 Correct 25 ms 10992 KB Output is correct
4 Correct 32 ms 10824 KB Output is correct
5 Correct 25 ms 10832 KB Output is correct
6 Correct 24 ms 10832 KB Output is correct
7 Correct 25 ms 10968 KB Output is correct
8 Correct 24 ms 10964 KB Output is correct
9 Correct 24 ms 10832 KB Output is correct
10 Correct 27 ms 10832 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 16 ms 10832 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 28 ms 10832 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 2560 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 2560 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 2560 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 26 ms 10832 KB Output is correct
2 Correct 27 ms 11136 KB Output is correct
3 Correct 25 ms 10992 KB Output is correct
4 Correct 32 ms 10824 KB Output is correct
5 Correct 25 ms 10832 KB Output is correct
6 Correct 24 ms 10832 KB Output is correct
7 Correct 25 ms 10968 KB Output is correct
8 Correct 24 ms 10964 KB Output is correct
9 Correct 24 ms 10832 KB Output is correct
10 Correct 27 ms 10832 KB Output is correct
11 Incorrect 16 ms 10832 KB Output isn't correct
12 Halted 0 ms 0 KB -