Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <string>
- #include <algorithm>
- #include <map>
- #include <iomanip>
- #include <cmath>
- #include <stack>
- #include <set>
- using namespace std;
- int main() {
- long long int n, m, l;
- cin >> n >> m >> l;
- vector<long int> c(n), b(m);
- for (long int i = 0; i < n; ++i) {
- cin >> c[i];
- }
- // считал наши ai бутылки с водой и пихаю их в мультисет
- multiset <long int> a(c.begin(), c.end());
- for (long int i = 0; i < m; ++i) {
- cin >> b[i];
- }
- long int ans = 0;
- //в цикле нахожу наибольшее число в set, которое меньше или равно bi. удаляю это число и на его место ставлю bi. уменьшаю оставшееся кол-во воды l
- for (long int i = 0; i < m; ++i) {
- auto low = a.lower_bound(b[i]);
- if (low != a.end()) {
- if (b[i] == *low) {
- ans++;
- continue;
- }
- }
- if (low != a.begin())
- --low;
- if (b[i] < *low) {
- break;
- }
- l -= (b[i] - *low);
- if (l < 0) {
- break;
- }
- a.erase(low);
- a.insert(b[i]);
- ++ans;
- }
- //вывожу ответ кек
- cout << ans;
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement