Submission #855394

#TimeUsernameProblemLanguageResultExecution timeMemory
855394vjudge1Split the sequence (APIO14_sequence)C++17
0 / 100
2091 ms30812 KiB
#include <bits/stdc++.h> #define speed ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); #define file(s) if (fopen(s".in", "r")) freopen(s".in", "r", stdin), freopen(s".out", "w", stdout) #define all(x) (x).begin(), (x).end() #define pb push_back #define sz(x) (int)x.size() #define F first #define S second #define int long long const int maxn = 2e5+7; const int inf = 1e18; const int mod = 1e9+7; using namespace std; int n, k; int a[maxn]; int pref[maxn]; int res; bool was[maxn]; //vector<int> total; set<int> st; set<int> total; void rec(int i, int cnt, int ans){ if(i == n && cnt < k) return; if(cnt == k){ if(res < ans){ res = ans; total = st; } return; } rec(i + 1, cnt, ans); if(!st.count(i)){ int left = 0, right = n + 1; auto l = st.upper_bound(i); if(st.size() != 0){ if(l != st.end()) right = *l; if(l != st.begin()) left = *(--l); } int add = (pref[i] - pref[left]) * (pref[right - 1] - pref[i + 1 - 1]); st.insert(i); rec(1, cnt + 1, ans + add); st.erase(i); } } void solve(){ cin >> n >> k; for(int i = 1; i <= n; i++){ cin >> a[i]; pref[i] = pref[i - 1] + a[i]; } rec(1, 0, 0); cout << res << '\n'; for(auto x : total) cout << x << ' '; } signed main(){ speed int test = 1; // cin >> test; while(test--){ solve(); } }
#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...