#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 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... |