1 条题解
-
0
#include <bits/stdc++.h> const int N=5e3+10,M=310; using namespace std; int n,m,ans; int a[N],b[M]; int check(int mid){ int c[N],d[M]; memcpy(c,a,sizeof(c)); memcpy(d,b,sizeof(d)); for(int i=mid;i>=1;i--){ int mn=INT_MAX,id=0; for(int j=m;j;j--) if(d[j]>=c[i]&&d[j]<mn) mn=d[j],id=j; if(!id) return 0; d[id]-=c[i]; } return 1; } int main(){ // freopen("data.in","r",stdin); // freopen("my.out","w",stdout); scanf("%d",&m); for(int i=1;i<=m;i++) scanf("%d",&b[i]); scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); sort(a+1,a+n+1); sort(b+1,b+m+1); int l=0,r=n; while(l<=r){ int mid=(l+r)>>1; if(check(mid)){ ans=mid; l=mid+1; }else r=mid-1; } printf("%d",ans); return 0; }
- 1
信息
- ID
- 2899
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 9
- 标签
- 递交数
- 42
- 已通过
- 2
- 上传者