제출 #1288077

#제출 시각아이디문제언어결과실행 시간메모리
1288077LIATricks of the Trade (CEOI23_trade)C++17
10 / 100
8090 ms8196 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define vll vector<ll> #define pll pair<ll, ll> int main() { ios_base::sync_with_stdio(0); cin.tie(NULL); ll n, k, ans = -1e18; cin >> n >> k; vll b(n), s(n); for (ll i = 0; i < n; ++i) cin >> b[i]; for (ll i = 0; i < n; ++i) cin >> s[i]; vll in(n), res(n); for (ll st = 0; st < n; ++st) { ll sum_buy = 0; priority_queue<pll, vector<pll>, greater<pll>> pq; ll sum_pq = 0; in.assign(n, 0); for (ll ed = st; ed < n; ++ed) { sum_buy += b[ed]; pq.push({s[ed], ed}); in[ed] = 1; sum_pq += s[ed]; while (pq.size() > k) { auto [node, idx] = pq.top(); pq.pop(); sum_pq -= node; in[idx] = 0; } if (pq.size() == k) { ll ans_ed = sum_pq - sum_buy; if (ans < ans_ed) { ans = ans_ed; res = in; } if (ans == ans_ed) { ans = ans_ed; ll t = pq.top().first; for (ll i = st; i <= ed; ++i) if (s[i] >= t) res[i] = 1; } } } } cout << ans << endl; string ss(n, '0'); for (ll i = 0; i < n; ++i) if (res[i] == 1) ss[i] = '1'; cout << ss << endl; return 0; }
#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...