求助,30分
查看原帖
求助,30分
738168
wang0728楼主2024/1/14 15:24
#include <cstdio>
#include <algorithm>
using namespace std;
int n,a[55],l,r,ans;
int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++) scanf("%d",&a[i]);
	scanf("%d %d",&l,&r);
	for(int i=1;i<=n;i++){
		if(a[i]<l){
			for(int j=1;j<=n;j++){
				if(i==j) continue;
				if(a[j]-(l-a[i])>=l){
					ans+=(l-a[i]);
					a[i]=l; a[j]-=(l-a[i]);
					break;
				}
				else if(a[j]-1>l){
					ans+=(a[j]-l);
					a[i]+=(a[j]-l);
					a[j]=l;
				}
			}
		}
		else if(a[i]>r){
			for(int j=1;j<=n;j++){
				if(i==j) continue;
				if(a[j]+(a[i]-r)<=r){
					ans+=(a[i]-r);
					a[i]=r; a[j]+=(a[i]-r);
					break;
				}
				else if(a[j]+1<r){
					ans+=(r-a[j]);
					a[i]-=(r-a[j]);
					a[j]=r;
				}
			}
		}
	}
//	for(int i=1;i<=n;i++) printf("%d ",a[i]);
	for(int i=1;i<=n;i++){
		if(a[i]<l || a[i]>r){
			printf("-1"); return 0;
		}
	}
	printf("%d",ans);
	return 0;
}
2024/1/14 15:24
加载中...