[ABC365C] Transportation Expenses求助
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N = 2e5;
int n,m,a[N + 5],cnt[N + 5],ans;
signed main(){
//freopen("expenses.in","r",stdin);
//freopen("expenses.out","w",stdout);
cin >> n >> m;
for(int i = 1;i <= n;i++){
cin >> a[i];
}
sort(a + 1,a + 1 + n);
for(int i = 1;i <= n;i++){
cnt[i] = cnt[i - 1] + a[i];
}
if(cnt[n] <= m){
cout << "infinite" << endl;
return 0;
}
for(int i = 1;i <= n;i++){
int x = floor((m - cnt[i]) * 1.0 / (n - i));
ans = max(ans,x);
}
cout << ans << endl;
fclose(stdin);
fclose(stdout);
return 0;
}
这一题我推出不等式 cnt[i]+(n−i)∗x<=m,cnt[i] 是前缀和,x 是补贴限额,然后找出最大值,在atcoder上提交错误了一个点,求大佬解答。