-
Notifications
You must be signed in to change notification settings - Fork 0
/
D.cpp
71 lines (53 loc) · 1.34 KB
/
D.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
typedef long double ld;
typedef pair<ll,ll> pll;
#define all(v) (v).begin(),(v).end()
#define rall(v) (v).rbegin(),(v).rend()
#define endl "\n"
#define fast ios_base::sync_with_stdio(false);cin.tie(NULL);
ll const inf = 1e18;
ll const maxn = 1e6+5;
ll const mod = 1e9+7;
// code begins here
int main(){
fast;
ll n,m,a;
cin>>n>>m>>a;
vector<ll> pmoney(n), price(m);
for(auto &u: pmoney)
cin>>u;
for(auto &u: price)
cin>>u;
sort(rall(pmoney));
sort(all(price));
ll l = 0, r = m, optr = 0, opts = 0 ;
while(l<=r){
ll mid = (l+r)/2;
if(mid>n){
r = mid-1;
continue;
}
vector<ll> crr, drr;
for(ll i=0;i<mid;i++){
crr.push_back(pmoney[i]);
drr.push_back(price[i]);
}
reverse(all(crr));
ll sum = 0;
for(ll i=0;i<mid;i++)
sum += max(0LL, drr[i] - crr[i] );
if(sum<=a){
optr = mid;
l = mid+1;
} else {
r = mid-1;
}
}
for(ll i=0;i<optr;i++)
opts += price[i];
opts = max(0LL, opts - a);
cout<<optr<<" "<<opts<<endl;
return 0;
}