Solution-P11569
假设有一个等差数列
根据等差数列的定义,我们可以知道
考虑枚举
我们可以先假设
然后考虑
代码展示:
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,a[1000001],b,c,x,y,z;
signed main(){
cin.tie(nullptr)->sync_with_stdio(0);
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
b+=a[i];
}
for(int i=0;a[1]+(n-1)*i<=a[n]+m;i++){
x=0;
for(int j=1;j<=n;j++){
x=max(x,a[j]-a[1]-(j-1)*i);
}
y=(2*a[1]+2*x+(n-1)*i)*n/2;
z=m-y+b;
if(z>=0){
c+=z/n+1;
}
}
cout<<c;
return 0;
}