#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<int> pq;
long long att = 0;
vector<long long> rem(N, 1e14);
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) && att == best) rem[j] = -pq.top();
}
long long t = 1e14;
for (int j = N; j >= i; j--) {
t = min(t, rem[j]);
if (S[j] >= t) belli[j] = 1;
}
}
cout << best << endl;
for (int i = 0; i < N; i++) cout << belli[i];
cout << endl;
}
# | 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... |