Submission #855410

#TimeUsernameProblemLanguageResultExecution timeMemory
855410vjudge1Split the sequence (APIO14_sequence)C++17
39 / 100
2054 ms7960 KiB
#include <map> #include <set> #include <list> #include <cmath> #include <ctime> #include <deque> #include <queue> #include <stack> #include <string> #include <bitset> #include <cstdio> #include <limits> #include <vector> #include <climits> #include <cstring> #include <cstdlib> #include <fstream> #include <numeric> #include <sstream> #include <cassert> #include <iomanip> #include <iostream> #include <algorithm> #include <stdio.h> #include <fstream> #include <unordered_map> using namespace std; typedef long long ll; typedef long double ld; #define all(x) x.begin(),x.end() #define pb push_back #define int long long const int maxn = (int)2e5 + 13; const ll inf = (long long)1e18 + 20; int n,a[maxn],k; ll dp[1001][1001],suf[maxn],pref[maxn],pr[1001][1001]; void solve(){ cin >> n >> k; for(int i = 1 ; i <= n ; i ++){ cin >> a[i]; pref[i] = pref[i - 1] + a[i]; } for(int i = n ; i >= 1 ; i --){ suf[i] = suf[i + 1] + a[i]; } for(int i = 1 ; i <= n ; i ++){ dp[1][i] = pref[i] * suf[i + 1]; } for(int kol = 2 ; kol <= k; kol ++){ for(int i = kol ; i < n ; i ++){ for(int j = 1 ; j < i ; j ++){ ll x = dp[kol - 1][j] + (pref[i] - pref[j]) * suf[i + 1]; if(dp[kol][i] <= x){ dp[kol][i] = x; pr[kol][i] = j; } } } } ll mx = 0,ind = 0; for(int i = k ; i <= n ; i ++){ if(mx < dp[k ][i]){ mx = dp[k ][i]; ind = i; } } cout << mx << "\n"; vector<int>v; v.pb(ind); int ok = pr[k][ind]; while(ok){ v.pb(ok); ok = pr[--k][ok]; } for(int i = v.size() - 1 ; i >= 0 ; i --){ cout << v[i] << ' '; } } signed main(){ ios_base::sync_with_stdio(0); cin.tie(0); int t = 1; //cin >> t; while(t --){ solve(); } 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...