This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
using namespace std;
const long long inf = (long long) 1e18 + 10;
const int inf1 = (int) 1e9 + 10;
#define int long long
#define dbl long double
#define endl '\n'
#define sc second
#define fr first
#define mp make_pair
#define pb push_back
#define all(x) x.begin(), x.end()
#define maxn 110000
int n, k, a[maxn], ps[maxn];
int sum(int l, int r) {
return ps[r] - ps[l-1];
}
void solve() {
cin >> n >> k;
for(int i = 1; i <= n; i++) {
cin >> a[i];
ps[i] = ps[i-1] + a[i];
}
pair<int,int> mx = mp(-inf,0);
for(int i = 1; i < n; i++) {
mx = max(mx,mp(sum(1,i)*sum(i+1,n),i));
// cout << i << " " << sum(1,i) << " " << sum(i+1,n) << endl;
}
priority_queue<pair<pair<int,int>,pair<int,int>>> pq;
int ans = 0;
vector<int> ansv;
pq.push(mp(mx,mp(1,n)));
while(k--) {
int val = pq.top().fr.fr;
int id = pq.top().fr.sc;
int l = pq.top().sc.fr;
int r = pq.top().sc.sc;
pq.pop();
// cout << l << " " << r << " " << id << " " << val << endl;
ans+= val;
ansv.pb(id);
int l1 = l;
int r1 = id;
if(r1-l1+1 > 1) {
pair<int,int> mx = mp(-inf,0);
for(int i = l1; i < r1; i++) {
mx = max(mx,mp(sum(l1,i)*sum(i+1,r1),i));
}
pq.push(mp(mx,mp(l1,r1)));
}
l1 = id+1;
r1 = r;
if(r1-l1+1 > 1) {
pair<int,int> mx = mp(-inf,0);
for(int i = l1; i < r1; i++) {
mx = max(mx,mp(sum(l1,i)*sum(i+1,r1),i));
}
pq.push(mp(mx,mp(l1,r1)));
}
}
cout << ans << endl;
for(auto x : ansv) {
cout << x << " ";
}
cout << endl;
}
int32_t main() {
ios::sync_with_stdio(false); cin.tie(0);
// freopen("in.in", "r", stdin);
// freopen("out.out", "w", stdout);
int tt = 1;
// cin >> tt;
while(tt--) solve();
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |