样例能过,时间复杂度也不高
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,a[50],sum=0,l,r,ans=0;
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
sum+=a[i];
}
cin>>l>>r;
if(sum>n*r||sum<n*l){
cout<<-1;
return 0;
}
sum=0;
for(int i=0;i<n;i++){
if(a[i]>r) a[i]-=r;
if(a[i]<l) a[i]-=l;
}
for(int i=0;i<n;i++){
if(a[i]==0) continue;
if(a[i]>0){
if(ans==0){
ans==a[i];
sum+=a[i];
continue;
}
if(ans>0){
sum+=a[i];
ans+=a[i];
continue;
}
if(ans<0){
ans+=a[i];
sum+=ans;
}
}
else{
if(ans==0){
ans=a[i];
sum+=a[i];
continue;
}
if(ans>0){
sum+=a[i];
ans+=a[i];
continue;
}
if(ans<0){
ans+=a[i];
sum+=ans;
}
}
}
cout<<sum;
return 0;
}