AT_abc365_c 题解
题目传送门
思路
题目要求补贴限额
对于每一次选择的
注意事项
- 不开
long long见祖宗。
AC CODE
#include<bits/stdc++.h>
using namespace std;
long long read(){long long 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,MAX=1e9;
int n,a[N];
long long m;
bool check(int x){
long long sum=0;
for(int i=1;i<=n;++i){
sum+=min(x,a[i]);
if(sum>m)
return false;
}
return true;
}
int main(){
n=read(),m=read();
for(int i=1;i<=n;++i)
a[i]=read();
int l=0,r=MAX;
while(l<=r){
int mid=(l+r)>>1;
if(check(mid))
l=mid+1;
else r=mid-1;
}
if(r!=MAX)
printf("%d\n",r);
else printf("infinite\n");
return 0;
}