30642023-02-12 08:22:29CattMajomházcpp17Hibás válasz 0/100633ms521904 KiB
#include <bits/stdc++.h>
using namespace std;
#define InTheNameOfGod ios::sync_with_stdio(0);cin.tie(0); cout.tie(0);
using ll = long long;

const int maxN = 2e5 + 5;
const int MOD = 1e9 + 7;
const int INF = 1e9 + 7;


int main() {

   InTheNameOfGod;

    int n,k;
    cin >> n >> k;

    vector<int> v(n), pref(n+1, 0);
    for(int &i : v) cin >> i;
    for(int i = 1; i <= n; i++) {
        pref[i] = pref[i-1] + v[i-1];
    }

    vector<vector<ll>> dp(n, vector<ll>(k+1, INF)), prev(n, vector<ll>(k+1, 0));
    dp[0][0] = v[0];
    for(ll i = 1; i < n; i++) {
        dp[i][0] = dp[i-1][0] + pref[i+1] + (i) * v[i];
    }
    for(int i = 0; i <= k; i++) {
        dp[0][i] = v[0];
    }
    for(int j = 1; j <= k; j++) {
        for(int i = 1; i < n; i++) {
            ll val1 = dp[i-1][j-1] + v[i];
            ll val2 = dp[i-1][j] + pref[i+1] - pref[prev[i-1][j]] + v[i] * (i- prev[i-1][j]);

            if(val1 < val2) {
                dp[i][j] = val1;
                prev[i][j] = i;
            }
            else {
                dp[i][j] = val2;
                prev[i][j] = prev[i-1][j];
            }
        }
    }

    cout << dp[n-1][k] << "\n";
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1828 KiB
2Hibás válasz6ms5596 KiB
subtask20/10
3Hibás válasz3ms2140 KiB
4Hibás válasz3ms2268 KiB
5Hibás válasz3ms2452 KiB
6Hibás válasz3ms2668 KiB
7Hibás válasz3ms3008 KiB
subtask30/10
8Hibás válasz3ms3240 KiB
9Hibás válasz3ms3360 KiB
10Hibás válasz3ms3792 KiB
11Hibás válasz3ms4156 KiB
12Hibás válasz3ms4908 KiB
subtask40/20
13Hibás válasz4ms5104 KiB
14Hibás válasz4ms5512 KiB
15Hibás válasz4ms6088 KiB
16Hibás válasz8ms10892 KiB
17Hibás válasz14ms20020 KiB
18Hibás válasz75ms83052 KiB
subtask50/29
19Hibás válasz20ms21784 KiB
20Hibás válasz48ms37684 KiB
21Hibás válasz104ms90740 KiB
22Hibás válasz182ms169200 KiB
23Hibás válasz356ms325792 KiB
subtask60/31
24Hibás válasz34ms28016 KiB
25Hibás válasz34ms28132 KiB
26Hibás válasz35ms28244 KiB
27Hibás válasz37ms34228 KiB
28Hibás válasz37ms34160 KiB
29Hibás válasz41ms40552 KiB
30Hibás válasz56ms52972 KiB
31Hibás válasz136ms103108 KiB
32Hibás válasz345ms178404 KiB
33Hibás válasz633ms334788 KiB
34Futási hiba190ms521904 KiB
35Futási hiba188ms521880 KiB
36Futási hiba233ms521852 KiB
37Futási hiba247ms521828 KiB
38Futási hiba203ms521776 KiB
39Futási hiba197ms521704 KiB
40Futási hiba200ms521688 KiB