Submission #1151278

#TimeUsernameProblemLanguageResultExecution timeMemory
1151278LudisseyKitchen (BOI19_kitchen)C++20
0 / 100
0 ms328 KiB
#include <bits/stdc++.h>
#define sz(a) (int)a.size()
#define all(a) a.begin(), a.end()
#define rall(a) a.rbegin(), a.rend()
#define int long long
using namespace std;

signed main() {
    ios_base::sync_with_stdio(false); cin.tie(nullptr);
    int n,m,K; cin >> n >> m >> K;
    priority_queue<pair<int,int>> pq;
    vector<int> a(n);
    vector<int> b(m);
    int sum=0;
    for (int i = 0; i < n; i++) { cin >> a[i]; sum-=a[i]; }
    for (int i = 0; i < m; i++) { cin >> b[i]; sum+=b[i]; }
    for (int i = 0; i < m; i++) pq.push({b[i],i});
    bool pos=(sum>=0);
    for (int i = 0; i < n; i++)
    {
        if(a[i]<K) {
            pos=false;
            break;
        }
        vector<pair<int,int>> kb;
        while(!pq.empty()&&sz(kb)<K){
            pair<int,int> u=pq.top(); pq.pop();
            if(u.first==0) break;
            kb.push_back(u);
        }
        if(sz(kb)!=K) { pos=false; break; }
        for (int i = 0; i < K; i++)
        {
            pq.push({kb[i].first-1,kb[i].second});
        }
    }
    if(pos) cout << sum << "\n";
    else cout << "Impossible\n";    
    
    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...