Submission #1224593

#TimeUsernameProblemLanguageResultExecution timeMemory
1224593LaMatematica14Tricks of the Trade (CEOI23_trade)C++20
10 / 100
8076 ms5188 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<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 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...