-1
已解决
#include<iostream>
using namespace std;
int a[101];
int main(){
int n,l,r,x=0,ans=0;
cin>>n;
for(int i=0;i<n;i++) {
cin>>a[i];
x+=a[i];
}
cin>>l>>r;
if (x<l*n||x>r*n) cout<<"-1"<<endl;
else{
for(int i=0;i<n;i++){
if (a[i]<l) {
int k=l-a[i];
a[i]=l;
for(int j=0;j<n;j++){
if (j!=i){
if (a[j]+k<=r) {
a[j]+=k;
ans+=k;
k=0;
break;
}
else {
ans+=(r-a[j]);
k=a[j]+k-r;
a[j]=r;
}
}
}
}
else if (a[i]>r){
int q=a[i]-r;
a[i]=r;
for(int j=0;j<n;j++){
if (j!=i){
if (a[j]-q>=l) {
a[j]-=q;
ans+=q;
q=0;
break;
}
else{
ans+=r-a[j];
q=q-a[j]+l;
a[j]=l;
}
}
}
}
}
cout<<ans<<endl;
}
return 0;
}
求思路
1
已采纳
其实不用那么复杂
贴核心代码:
for(int i=1; i<=n; i++) { cin>>a[i]; sum+=a[i]; } int x,y; cin>>x>>y; for(int i=1; i<=n; i++) if(a[i]<x) total1+=x-a[i]; else if(a[i]>y) total2+=a[i]-y; if(sum/n<x||sum/n>y) cout<<-1;//判断是否满足题目条件 else cout<<max(total1,total2);
0
0
#include<bits/stdc++.h>
using namespace std;
int a[101];
int main(){
int n,x,y,total1,total2,sum;
cin>>n;
for(int i=1; i<=n; i++)
{
cin>>a[i];
sum+=a[i];
}
cin>>x>>y;
for(int i=1; i<=n; i++)
if(a[i]<x) total1+=x-a[i];
else if(a[i]>y) total2+=a[i]-y;
if(sum/n<x||sum/n>y) cout<<-1;
else cout<<max(total1,total2);
return 0;
}
只有40分了
0
0