1 条题解

  • 2
    @ 2025-12-12 13:20:26

    二分

    #include<bits/stdc++.h>
    using namespace std;
    #define int long long
    const int N=2e5+10;
    int n,m,a[N];
    bool check(int l)
    {
    	int res=0;
    	for(int i=1;i<=n;i++)
    		res+=min(a[i],l);
    	if(res<=m)return 1;
    	return 0;
    }
    signed main()
    {
    	scanf("%lld%lld",&n,&m);int s=0;
    	for(int i=1;i<=n;i++)scanf("%lld",&a[i]),s+=a[i];
    	if(s<=m){puts("infinite");return 0;}
    	int l=0,r=2e14;
    	while(l+1<r)
    	{
    		int mid=(l+r)/2;
    		if(check(mid))l=mid;
    		else r=mid;
    	}
    	printf("%lld\n",l);
    	return 0;
    }
    
    • 1

    信息

    ID
    7999
    时间
    2000ms
    内存
    1024MiB
    难度
    6
    标签
    递交数
    37
    已通过
    12
    上传者