Submission #1077276

# Submission time Handle Problem Language Result Execution time Memory
1077276 2024-08-27T04:31:18 Z YudoTLE Feast (NOI19_feast) C++17
12 / 100
170 ms 12372 KB
#include <bits/stdc++.h>
using namespace std;

using ll = long long;

const int INF = INT_MAX / 2;
const int MAXN = 3e5 + 5;

int n, k;
ll arr[MAXN], dp[MAXN][2];
int cnt[MAXN][2];
ll answer;

bool eval(ll c)
{
    dp[0][1] = -INF;
    for (int i = 1; i <= n; i++)
    {
        if (dp[i - 1][0] >= dp[i - 1][1])
        {
            dp[i][0] = dp[i - 1][0];
            cnt[i][0] = cnt[i - 1][0];
        }
        else
        {
            dp[i][0] = dp[i - 1][1];
            cnt[i][0] = cnt[i - 1][1];
        }
        if (dp[i - 1][0] - c >= dp[i - 1][1])
        {
            dp[i][1] = arr[i] + dp[i - 1][0] - c;
            cnt[i][1] = cnt[i - 1][0] + 1;
        }
        else
        {
            dp[i][1] = arr[i] + dp[i - 1][1];
            cnt[i][1] = cnt[i - 1][1];
        }
    }

    ll optv = LLONG_MIN;
    int optx = INT_MAX;
    for (int i = 0; i <= n; i++)
        for (int ii = 0; ii < 2; ii++)
    {
        ll nv = dp[i][ii] + c * cnt[i][ii];
        int nx = cnt[i][ii];
        if (nv > optv)
        {
            optv = nv;
            optx = nx;
        }
        if (nv == optv)
            optx = min(optx, nx);
    }
    if (optx <= k)
        answer = max(answer, optv);
    return optx <= k;
}

void solve()
{
    cin >> n >> k;
    for (int i = 1; i <= n; i++)
        cin >> arr[i];

    ll lo = 0, hi = INF;
    while (lo <= hi)
    {
        ll mi = lo + (hi - lo) / 2;
        if (eval(mi))
            hi = mi - 1;
        else
            lo = mi + 1;
    }

    cout << answer << '\n';
}

int main()
{
    // ios_base::sync_with_stdio(false), cin.tie(0);

    int t = 1;
    // cin >> t;
    while (t--) solve();

    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 100 ms 11084 KB Output is correct
2 Correct 101 ms 11604 KB Output is correct
3 Correct 110 ms 12372 KB Output is correct
4 Correct 105 ms 12272 KB Output is correct
5 Correct 108 ms 12112 KB Output is correct
6 Correct 102 ms 11860 KB Output is correct
7 Correct 105 ms 11856 KB Output is correct
8 Correct 102 ms 12292 KB Output is correct
9 Correct 104 ms 11884 KB Output is correct
10 Correct 103 ms 12116 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 62 ms 10324 KB Output is correct
2 Correct 67 ms 10836 KB Output is correct
3 Correct 63 ms 10576 KB Output is correct
4 Correct 66 ms 10712 KB Output is correct
5 Correct 106 ms 11604 KB Output is correct
6 Correct 65 ms 10580 KB Output is correct
7 Correct 65 ms 10832 KB Output is correct
8 Correct 107 ms 12116 KB Output is correct
9 Correct 100 ms 11596 KB Output is correct
10 Correct 71 ms 10836 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 170 ms 11604 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 348 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 348 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 348 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 100 ms 11084 KB Output is correct
2 Correct 101 ms 11604 KB Output is correct
3 Correct 110 ms 12372 KB Output is correct
4 Correct 105 ms 12272 KB Output is correct
5 Correct 108 ms 12112 KB Output is correct
6 Correct 102 ms 11860 KB Output is correct
7 Correct 105 ms 11856 KB Output is correct
8 Correct 102 ms 12292 KB Output is correct
9 Correct 104 ms 11884 KB Output is correct
10 Correct 103 ms 12116 KB Output is correct
11 Correct 62 ms 10324 KB Output is correct
12 Correct 67 ms 10836 KB Output is correct
13 Correct 63 ms 10576 KB Output is correct
14 Correct 66 ms 10712 KB Output is correct
15 Correct 106 ms 11604 KB Output is correct
16 Correct 65 ms 10580 KB Output is correct
17 Correct 65 ms 10832 KB Output is correct
18 Correct 107 ms 12116 KB Output is correct
19 Correct 100 ms 11596 KB Output is correct
20 Correct 71 ms 10836 KB Output is correct
21 Incorrect 170 ms 11604 KB Output isn't correct
22 Halted 0 ms 0 KB -