Submission

Status:

(PPPPPPPPPPPP-S)(PPPPPP-SSSS)(PPPPPPPPP)(PPPPP-SSSS)(PPPPP-SSSS)(PPPP-SSSSSSSSS)(TSSSSSSSSSSSSSSSSSSSSS)

Subtask/Task Score:

{0/5}{0/7}{8/8}{0/12}{0/16}{0/28}{0/24}

Score: 8

User: KantaponZ

Problemset: แคง (Kang)

Language: cpp

Time: 2.069 second

Submitted On: 2025-06-30 12:50:13

#include <bits/stdc++.h>
using namespace std;

#define ll long long

unordered_map<int,int> cnt;
unordered_map<int,bool> del;
vector<ll> C;
priority_queue<pair<ll, int>> pq;

vector<long long> capsize(vector<int> A, vector<int> B) {
      
    int N = A.size(), M = B.size();
    ll sum = 0;
    for (int i = 0; i < N; i++) {
        sum += A[i];
        cnt[A[i]]++;
    }
    for (auto [k, v] : cnt) {
        pq.push({k * v, k});
    }
    for (int i = 0; i < M; i++) {
        if (sum <= 0 || pq.empty()) {
          break;
        }
        if (!del[B[i]]) {
            sum += B[i];
            cnt[B[i]]++;
            pq.push({B[i] * cnt[B[i]], B[i]});
        }
        
        if (del[pq.top().second] == false) {
            int x = pq.top().second;
            cnt[x] = 0;
            sum -= pq.top().first;
            del[pq.top().second] = 1;
            pq.pop();
        } else {
            while (!pq.empty() && del[pq.top().second] == true) {
                pq.pop();
            }
            sum -= pq.top().first;
            del[pq.top().second] = 1;
            pq.pop();
        }
        C.emplace_back(max(sum, 0 * 1LL));
    }
    
    for (int i = C.size(); i < M; i++) {
        C.emplace_back(0);
    }
    
    return C;
}

/*
int main() {
	int n, m;
	vector<int> A, B;
	cin >> n >> m;
	A.resize(n);
	B.resize(m);
	for(auto &e : A) cin >> e;
	for(auto &e : B) cin >> e;
	vector<ll> vec = capsize(A, B);
	for(auto e : vec) cout << e << " ";
}*/