AT_abc364_c 题解

· · 题解

题目传送门

思路

这道题要求:只要甜度和咸度其中有一项超标,高桥就不会吃了。于是,我们可以分别求出光吃最甜的和光吃最咸的能吃几道菜,取两个答案的最小值即可。

注意事项

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;
}