Submission #474558

# Submission time Handle Problem Language Result Execution time Memory
474558 2021-09-19T03:18:34 Z PurpleCrayon Feast (NOI19_feast) C++17
67 / 100
315 ms 9704 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 < 100; 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();
}
# Verdict Execution time Memory Grader output
1 Incorrect 212 ms 9356 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 200 ms 9468 KB Output is correct
2 Correct 229 ms 9568 KB Output is correct
3 Correct 207 ms 9452 KB Output is correct
4 Correct 207 ms 9540 KB Output is correct
5 Correct 256 ms 9408 KB Output is correct
6 Correct 198 ms 9440 KB Output is correct
7 Correct 213 ms 9688 KB Output is correct
8 Correct 287 ms 9632 KB Output is correct
9 Correct 216 ms 9380 KB Output is correct
10 Correct 209 ms 9628 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 301 ms 9588 KB Output is correct
2 Correct 289 ms 9472 KB Output is correct
3 Correct 289 ms 9556 KB Output is correct
4 Correct 290 ms 9480 KB Output is correct
5 Correct 269 ms 9536 KB Output is correct
6 Correct 284 ms 9620 KB Output is correct
7 Correct 315 ms 9652 KB Output is correct
8 Correct 274 ms 9684 KB Output is correct
9 Correct 313 ms 9704 KB Output is correct
10 Correct 277 ms 9668 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 0 ms 332 KB Output is correct
3 Correct 1 ms 332 KB Output is correct
4 Correct 1 ms 332 KB Output is correct
5 Correct 0 ms 332 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 332 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 0 ms 332 KB Output is correct
3 Correct 1 ms 332 KB Output is correct
4 Correct 1 ms 332 KB Output is correct
5 Correct 0 ms 332 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 332 KB Output is correct
11 Correct 1 ms 456 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
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 0 ms 332 KB Output is correct
3 Correct 1 ms 332 KB Output is correct
4 Correct 1 ms 332 KB Output is correct
5 Correct 0 ms 332 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 332 KB Output is correct
11 Correct 1 ms 456 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 3 ms 332 KB Output is correct
22 Correct 3 ms 332 KB Output is correct
23 Correct 3 ms 332 KB Output is correct
24 Correct 3 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 3 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
# Verdict Execution time Memory Grader output
1 Incorrect 212 ms 9356 KB Output isn't correct
2 Halted 0 ms 0 KB -