답안 #474553

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
474553 2021-09-19T02:53:52 Z PurpleCrayon Feast (NOI19_feast) C++17
67 / 100
244 ms 9688 KB
#include <bits/stdc++.h>
using namespace std;
 
#define sz(v) int(v.size())
#define ar array
typedef long long ll;
const int MAXN = 3e5+10, MOD = 1e9+7;

int n, k;
ll a[MAXN], ps[MAXN];
pair<double, ll> dp[MAXN];

pair<double, ll> v(double x) { // cnt, cost
    fill(dp, dp+n, make_pair(0., 0ll));
    pair<double, ll> prv{0., 0};
    for (int i = 0; i < n; i++) {
        if (i) dp[i] = dp[i-1];
        // {ps[i] - ps[j] + dp[j].first, dp[j].second + 1}
        dp[i] = max(dp[i], make_pair(prv.first + ps[i] - x, prv.second + 1));
        prv = max(prv, make_pair(-ps[i] + dp[i].first, dp[i].second));
    }
    return dp[n-1];
}
void solve() {
    cin >> n >> k;
    for (int i = 0; i < n; i++) cin >> a[i];
    for (int i = 0; i < n; i++) ps[i] = a[i] + (i ? ps[i-1] : 0);

    double lo = 0, hi = 1e18;
    for (int rep = 0; rep < 80; rep++) {
        double mid = (lo + hi) / 2;
        if (v(mid).second >= k) lo = mid;
        else hi = mid;
    }
    double opt = lo;
    auto [ans, cnt] = v(opt);
    ans += opt * cnt;
    cout << llround(ans) << '\n';
}
int main(){
    ios::sync_with_stdio(false); cin.tie(0);
    int T=1;
    //cin >> T;
    while (T--) solve();
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 166 ms 9404 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 166 ms 9468 KB Output is correct
2 Correct 171 ms 9668 KB Output is correct
3 Correct 165 ms 9456 KB Output is correct
4 Correct 169 ms 9540 KB Output is correct
5 Correct 177 ms 9416 KB Output is correct
6 Correct 178 ms 9384 KB Output is correct
7 Correct 173 ms 9688 KB Output is correct
8 Correct 180 ms 9604 KB Output is correct
9 Correct 182 ms 9384 KB Output is correct
10 Correct 173 ms 9548 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 238 ms 9468 KB Output is correct
2 Correct 231 ms 9472 KB Output is correct
3 Correct 244 ms 9680 KB Output is correct
4 Correct 224 ms 9472 KB Output is correct
5 Correct 227 ms 9640 KB Output is correct
6 Correct 238 ms 9624 KB Output is correct
7 Correct 239 ms 9656 KB Output is correct
8 Correct 236 ms 9540 KB Output is correct
9 Correct 239 ms 9668 KB Output is correct
10 Correct 227 ms 9540 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 1 ms 332 KB Output is correct
3 Correct 0 ms 204 KB Output is correct
4 Correct 0 ms 204 KB Output is correct
5 Correct 1 ms 204 KB Output is correct
6 Correct 1 ms 332 KB Output is correct
7 Correct 1 ms 332 KB Output is correct
8 Correct 1 ms 332 KB Output is correct
9 Correct 1 ms 204 KB Output is correct
10 Correct 1 ms 204 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 1 ms 332 KB Output is correct
3 Correct 0 ms 204 KB Output is correct
4 Correct 0 ms 204 KB Output is correct
5 Correct 1 ms 204 KB Output is correct
6 Correct 1 ms 332 KB Output is correct
7 Correct 1 ms 332 KB Output is correct
8 Correct 1 ms 332 KB Output is correct
9 Correct 1 ms 204 KB Output is correct
10 Correct 1 ms 204 KB Output is correct
11 Correct 1 ms 332 KB Output is correct
12 Correct 1 ms 332 KB Output is correct
13 Correct 1 ms 332 KB Output is correct
14 Correct 1 ms 332 KB Output is correct
15 Correct 1 ms 332 KB Output is correct
16 Correct 1 ms 332 KB Output is correct
17 Correct 1 ms 332 KB Output is correct
18 Correct 1 ms 332 KB Output is correct
19 Correct 1 ms 332 KB Output is correct
20 Correct 1 ms 332 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 1 ms 332 KB Output is correct
3 Correct 0 ms 204 KB Output is correct
4 Correct 0 ms 204 KB Output is correct
5 Correct 1 ms 204 KB Output is correct
6 Correct 1 ms 332 KB Output is correct
7 Correct 1 ms 332 KB Output is correct
8 Correct 1 ms 332 KB Output is correct
9 Correct 1 ms 204 KB Output is correct
10 Correct 1 ms 204 KB Output is correct
11 Correct 1 ms 332 KB Output is correct
12 Correct 1 ms 332 KB Output is correct
13 Correct 1 ms 332 KB Output is correct
14 Correct 1 ms 332 KB Output is correct
15 Correct 1 ms 332 KB Output is correct
16 Correct 1 ms 332 KB Output is correct
17 Correct 1 ms 332 KB Output is correct
18 Correct 1 ms 332 KB Output is correct
19 Correct 1 ms 332 KB Output is correct
20 Correct 1 ms 332 KB Output is correct
21 Correct 2 ms 332 KB Output is correct
22 Correct 3 ms 332 KB Output is correct
23 Correct 2 ms 332 KB Output is correct
24 Correct 2 ms 332 KB Output is correct
25 Correct 3 ms 332 KB Output is correct
26 Correct 2 ms 332 KB Output is correct
27 Correct 2 ms 332 KB Output is correct
28 Correct 2 ms 332 KB Output is correct
29 Correct 2 ms 332 KB Output is correct
30 Correct 2 ms 332 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 166 ms 9404 KB Output isn't correct
2 Halted 0 ms 0 KB -