Submission #30856

#TimeUsernameProblemLanguageResultExecution timeMemory
30856NavickSplit the sequence (APIO14_sequence)C++14
50 / 100
186 ms4672 KiB
#include <bits/stdc++.h> #define F first #define S second #define pii pair<int, int> #define pb push_back using namespace std; typedef long long ll; typedef long double ld; const int N = 1e3 + 10, K = 210; const ll INF = 1e18; ll dp[N][K], ps[N]; int par[N][K]; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); int n, k; cin >> n >> k; ++k; for(int i=0; i<n; i++){ int x; cin >> x; ps[i + 1] = ps[i] + x; } for(int j=2; j<=k; j++) for(int i=1; i<=n; i++){ dp[i][j] = -INF; for(int c=i-1; c>0; c--){ if(dp[i][j] < (ps[i] - ps[c]) * ps[c] + dp[c][j - 1]) par[i][j] = c; dp[i][j] = max(dp[i][j], (ps[i] - ps[c]) * ps[c] + dp[c][j - 1]); } } cout << dp[n][k] << '\n'; while(k > 1){ cout << par[n][k] << ' '; n = par[n][k]; --k; }cout << endl; }
#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...