AT_abc364_c 题解
题目传送门
思路
这道题要求:只要甜度和咸度其中有一项超标,高桥就不会吃了。于是,我们可以分别求出光吃最甜的和光吃最咸的能吃几道菜,取两个答案的最小值即可。
注意事项
- 不开
long long见祖宗。
AC CODE
#include<bits/stdc++.h>
using namespace std;
int read(){int x=0;char f=1,ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();return x*f;}
const int N=2e5+10;
int n,a[N],b[N];
long long x,y;
bool cmp(int xx,int yy){
return xx>yy;
}
int calc_a(){
long long sum_a=0;
for(int i=1;i<=n;++i){
sum_a+=a[i];
if(sum_a>x)
return i;
}
return n;
}
int calc_b(){
long long sum_b=0;
for(int i=1;i<=n;++i){
sum_b+=b[i];
if(sum_b>y)
return i;
}
return n;
}
int main(){
scanf("%d%lld%lld",&n,&x,&y);
for(int i=1;i<=n;++i)
a[i]=read();
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;++i)
b[i]=read();
sort(b+1,b+n+1,cmp);
printf("%d\n",min(calc_a(),calc_b()));
return 0;
}