Submission #1224576

#TimeUsernameProblemLanguageResultExecution timeMemory
1224576LaMatematica14Tricks of the Trade (CEOI23_trade)C++20
10 / 100
8087 ms5100 KiB
#include <bits/stdc++.h> using namespace std; int main() { int N, K; cin >> N >> K; vector<long long> T(N), S(N); for (int i = 0; i < N; i++) cin >> T[i]; for (int i = 0; i < N; i++) cin >> S[i]; //for (int i = 0; i < N; i++) S[i] -= T[i]; long long best = -1e14; vector<int> belli(N, 0); for (int i = 0; i < N; i++) { priority_queue<int> pq; long long att = 0; for (int j = i; j < N; j++) { att += S[j]-T[j]; pq.push(-S[j]); if (pq.size() > K) { att += pq.top(); pq.pop(); } if (pq.size() == K) best = max(best, att); } } for (int i = 0; i < N; i++) { priority_queue<pair<int, int>> pq; long long att = 0; int lb = -1; for (int j = i; j < N; j++) { att += S[j]-T[j]; pq.push({-S[j], j}); if (pq.size() > K) { att += pq.top().first; if (pq.top().second <= lb) belli[pq.top().second] = 1; pq.pop(); } if ((pq.size() == K) && att == best) lb = j; } while (!pq.empty()) { if (pq.top().second <= lb) belli[pq.top().second] = 1; pq.pop(); } } cout << best << endl; for (int i = 0; i < N; i++) cout << belli[i]; cout << endl; }
#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...