Submission #1001369

#TimeUsernameProblemLanguageResultExecution timeMemory
1001369aaaaaarrozSplit the sequence (APIO14_sequence)C++17
0 / 100
2058 ms15964 KiB
#include <bits/stdc++.h> using namespace std; #define ll intmax_t int main() { ll n, K; cin >> n >> K; vector<ll> arr(n); for(ll &a : arr) cin >> a; vector<ll> prefix(n+1, 0); for(ll i = 0; i < n; i++) { prefix[i+1] = prefix[i] + arr[i]; } vector<vector<ll>> dp(n+1, vector<ll>(K+1, 0)); vector<vector<ll>> prev(n+1, vector<ll>(K+1, -1)); for(ll k = 1; k <= K; k++) { for(ll i = k; i <= n; i++) { for(ll p = 0; p < i; p++) { if((dp[p][k-1] + (prefix[i] - prefix[p]) * prefix[p])>dp[i][k]){ prev[i][k]=p; dp[i][k] = dp[p][k-1] + (prefix[i] - prefix[p]) * prefix[p]; } } } } vector<ll>splits; cout<<dp[n][K]<<"\n"; ll parent=prev[n][K]; ll k=K; splits.push_back(parent); while(prev[parent][k]!=-1){ k--; parent=prev[parent][k]; splits.push_back(parent); } reverse(splits.begin(),splits.end()); for(ll &res:splits){ cout<<res<<" "; } return 0; }
#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...