제출 #1001365

#제출 시각아이디문제언어결과실행 시간메모리
1001365aaaaaarrozSplit the sequence (APIO14_sequence)C++17
0 / 100
2058 ms12124 KiB
#include <bits/stdc++.h> using namespace std; int main() { int n, K; cin >> n >> K; vector<int> arr(n); for(int &a : arr) cin >> a; vector<int> prefix(n+1, 0); for(int i = 0; i < n; i++) { prefix[i+1] = prefix[i] + arr[i]; } vector<vector<int>> dp(n+1, vector<int>(K+1, 0)); vector<vector<int>> prev(n+1, vector<int>(K+1, -1)); for(int k = 1; k <= K; k++) { for(int i = k; i <= n; i++) { for(int 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<int>splits; cout<<dp[n][K]<<"\n"; int parent=prev[n][K]; int 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(int &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...