제출 #537177

#제출 시각아이디문제언어결과실행 시간메모리
537177LoboSplit the sequence (APIO14_sequence)C++17
0 / 100
10 ms1844 KiB
#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 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...