Submission #1303822

#TimeUsernameProblemLanguageResultExecution timeMemory
1303822nathlol2수열 (APIO14_sequence)C++20
50 / 100
2097 ms32152 KiB
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 111111;
int n, k, pf[N], dp[N][202], r[N][202];
vector<int> ans;
signed main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    cin >> n >> k;
    for(int i = 1;i<=n;i++){
        cin >> pf[i];
        pf[i] += pf[i - 1];
    }
    for(int s = 1;s<=k + 1;s++){
        for(int i = 1;i<=n;i++){
            for(int j = 0;j<i;j++){
                if(dp[j][s - 1] + (pf[i] - pf[j]) * (pf[n] - pf[i]) >= dp[i][s]){
                    dp[i][s] = dp[j][s - 1] + (pf[i] - pf[j]) * (pf[n] - pf[i]);
                    r[i][s] = j;
                }
            }
        }
    }
    int id = r[n][k + 1];
    for(int i = k;i>0;i--){
        ans.push_back(id);
        id = r[id][i];
    }
    reverse(ans.begin(), ans.end());
    cout << dp[n][k + 1] << '\n';
    for(auto x : ans) cout << x << ' ';
}
#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...