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;
#define endl '\n'
#define MOD 1e9 + 7
int n,k,mx;
vector<int> a,ans;
priority_queue<pair<pair<int,int>,pair<int,int> > > q;
pair<int,int> solve(int l,int r)
{
int sum = a[r]-a[l-1];
auto it = upper_bound(a.begin()+l,a.begin()+r,sum/2+a[l]);
auto it2 = it;
it2--;
int s1 = (*it-a[l-1])*(a[r]-*it);
int s2 = (*it2-a[l-1])*(a[r]-*it2);
if(s1>s2) return {s1,it-a.begin()};
else return {s2,it2-a.begin()};
}
int main()
{
ios_base::sync_with_stdio(0); cin.tie(0);
cin >> n >> k;
a.resize(n+1);
for(int i = 1;i <= n;i++){ cin >> a[i]; a[i]+=a[i-1]; }
q.push({solve(1,n),{1,n}});
while(k--)
{
int x = q.top().first.first,ct = q.top().first.second,l = q.top().second.first,r = q.top().second.second;
q.pop();
mx+=x;
ans.push_back(ct);
q.push({solve(l,ct),{l,ct}});
q.push({solve(ct+1,r),{ct+1,r}});
}
cout << mx << endl;
for(int i = 0;i < ans.size();i++) cout << ans[i] << ' ';
}
Compilation message (stderr)
sequence.cpp: In function 'int main()':
sequence.cpp:44:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int i = 0;i < ans.size();i++) cout << ans[i] << ' ';
~~^~~~~~~~~~~~| # | 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... |