제출 #1193597

#제출 시각아이디문제언어결과실행 시간메모리
1193597yhx3Kitchen (BOI19_kitchen)C++20
0 / 100
2 ms328 KiB
#include<bits/stdc++.h> #include<iostream> #include<vector> using namespace std; #define ll long long void solve() { int n,m,k; cin >> n >> m >> k; vector<int> a(n); vector<int> b(m); for (int i = 0; i < n; i++) { cin >> a[i]; } for (int i = 0; i < m; i++) { cin >> b[i]; } if (k > m || (*min_element(a.begin(),a.end())) < k) { cout << "Impossible"; return; } sort(b.begin(),b.end(),greater<int>()); ll ans = 0; for (int i = 0; i < n; i++) { multiset<int> lst; int sm = 0; for (int j = 0; j < k; j++) { lst.insert(b[j]); sm+=b[j]; } for (int j = k; j < m; j++) { auto ub = lst.upper_bound(sm-a[i]+b[j]); if (ub == lst.end()) { sm -= (*lst.rbegin()); sm += b[j]; lst.erase(prev(lst.end())); lst.insert(b[j]); } else if (ub == lst.begin()) { continue; } else { sm -= (*prev(ub,1)); sm += b[j]; lst.erase(*prev(ub,1)); lst.insert(b[j]); } } ans += sm-a[i]; } cout << ans; } int main() { ios_base::sync_with_stdio(false); cin.tie(); int t = 1; // cin >> t; while (t--) { solve(); } 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...