제출 #1343136

#제출 시각아이디문제언어결과실행 시간메모리
1343136alexandrosFeast (NOI19_feast)C++20
0 / 100
1097 ms16556 KiB
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef pair<ll, ll> pll;

vector<ll> vec;
ll amount, lambda;

pair<ll, ll> dp(ll i, bool open) // profit, segments
{
    if(i == amount-1) return open ? make_pair(vec[i] - lambda, 1ll) : make_pair(0ll, 0ll);
    pair<ll, ll> best = {LLONG_MIN, LLONG_MIN};
    if(!open) best = max(dp(i+1, 1), dp(i+1, 0));
    else best = max(pll{dp(i+1, 1).first + vec[i], dp(i+1, 1).second},
                    pll{dp(i+1, 0).first + vec[i] - lambda, dp(i+1, 0).second+1});
    return best;
}

int main() 
{
    ll seg, s = 0;
    scanf("%lld %lld", &amount, &seg);
    vec.resize(amount);
    for(ll i = 0; i < amount; i++) 
    {
        scanf("%lld", &vec[i]);
        s += max(vec[i], 0ll);
    }
    ll l = 0, r = s;
    while(l <= r)
    {
        lambda = (l + r) / 2;
        auto res = max(dp(0, 0), dp(0, 1));
        if(res.second > seg)
        {
            l = lambda+1;
        }
        else if(res.second < seg)
        {
            r = lambda-1;
        }
        else
        {
            l = lambda;
            r = lambda-1;
        }
    }
    lambda = l;
    auto res = max(dp(0, 0), dp(0, 1));
    // cout << res.first << " " << lambda << "\n";
    printf("%lld\n", res.first + res.second * lambda);
}

컴파일 시 표준 에러 (stderr) 메시지

feast.cpp: In function 'int main()':
feast.cpp:24:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   24 |     scanf("%lld %lld", &amount, &seg);
      |     ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
feast.cpp:28:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   28 |         scanf("%lld", &vec[i]);
      |         ~~~~~^~~~~~~~~~~~~~~~~
#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...