60分求助 :(
查看原帖
60分求助 :(
1083533
jamig楼主2024/8/9 10:12
#include <bits/stdc++.h>
#define endl '\n'
using namespace std;
using ll = long long;
const int N = 1e3+5;
int n,m;
int a[N],b[N];
int ans = INT_MIN;
bool cmp(int x,int y)
{
    return x>y;
}
bool check(int x)
{
    int c[N];
    for(int i=1;i<=m;i++) c[i] = a[i];
    int cnt = 0;
    int now = 0;
    for(int i=1;i<=m;i++){
        for(int j=now;j<=n;j++){
            if(c[i]-b[j]>0){
                c[i]-=b[i];
                cnt++;now++;
                continue;
            }else{
                break;
            }
        }
    }
    return cnt>=x;
}
int main()
{
    cin >> m;
    for(int i=1;i<=m;i++) cin >> a[i];
    cin >> n;
    for(int i=1;i<=n;i++) cin >> b[i];
    sort(a+1,a+m+1,cmp);sort(b+1,b+n+1);
    // cout << check(7);
    // for(int i=1;i<=m;i++) cout << a[i] << ' ';
    // cout << endl;
    // for(int i=1;i<=n;i++) cout << b[i] << ' ';
    int l = 0,r = n;
    while(l<=r){
        int mid = l+r>>1;
        if(check(mid)){
            l = mid+1;
            ans = max(ans,mid);
        }else r = mid-1;
    }
    cout << ans;
    return 0;
}
2024/8/9 10:12
加载中...