Submission #56958

#TimeUsernameProblemLanguageResultExecution timeMemory
56958AutoratchSplit the sequence (APIO14_sequence)C++14
0 / 100
15 ms920 KiB
#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 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...