Submission #474557

# Submission time Handle Problem Language Result Execution time Memory
474557 2021-09-19T03:18:20 Z PurpleCrayon Feast (NOI19_feast) C++17
67 / 100
760 ms 14388 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;
 
using ld = long double;
#define double ld
 
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 646 ms 13868 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 613 ms 14052 KB Output is correct
2 Correct 652 ms 14356 KB Output is correct
3 Correct 622 ms 14028 KB Output is correct
4 Correct 613 ms 14092 KB Output is correct
5 Correct 621 ms 13976 KB Output is correct
6 Correct 618 ms 14016 KB Output is correct
7 Correct 630 ms 14388 KB Output is correct
8 Correct 635 ms 14300 KB Output is correct
9 Correct 628 ms 13892 KB Output is correct
10 Correct 623 ms 14284 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 702 ms 14232 KB Output is correct
2 Correct 702 ms 14044 KB Output is correct
3 Correct 727 ms 14188 KB Output is correct
4 Correct 716 ms 14060 KB Output is correct
5 Correct 735 ms 14184 KB Output is correct
6 Correct 739 ms 14208 KB Output is correct
7 Correct 752 ms 14316 KB Output is correct
8 Correct 748 ms 14188 KB Output is correct
9 Correct 760 ms 14360 KB Output is correct
10 Correct 731 ms 14324 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 1 ms 204 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
4 Correct 1 ms 332 KB Output is correct
5 Correct 1 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 332 KB Output is correct
10 Correct 1 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 1 ms 204 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
4 Correct 1 ms 332 KB Output is correct
5 Correct 1 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 332 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 344 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 1 ms 204 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
4 Correct 1 ms 332 KB Output is correct
5 Correct 1 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 332 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 344 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 6 ms 416 KB Output is correct
22 Correct 6 ms 332 KB Output is correct
23 Correct 7 ms 332 KB Output is correct
24 Correct 6 ms 332 KB Output is correct
25 Correct 6 ms 332 KB Output is correct
26 Correct 6 ms 428 KB Output is correct
27 Correct 6 ms 332 KB Output is correct
28 Correct 5 ms 332 KB Output is correct
29 Correct 5 ms 332 KB Output is correct
30 Correct 6 ms 332 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 646 ms 13868 KB Output isn't correct
2 Halted 0 ms 0 KB -