一道简单的贪心
小于左边界意味着需要L-arr[i]个人来填,大于有边界意味着需要arr[i]-R个人出去
当需要填的人数大于出去的人数则返回-1同理出去的人数大于需要填的人数也返回-1
返回的数实际上就是一方到达左右边界最大的数(如取最小的数则会出现未到达边界的情况)
import java.util.Scanner;
public class xueshengfenzu {
public static void main(String args[]) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int arr[]=new int[n];
int sum=0;
for(int i=0;i<n;i++) {
arr[i]=sc.nextInt();
sum+=arr[i];
}
int L=sc.nextInt();
int R=sc.nextInt();
int maxr=0;
int maxl=0;
for(int i=0;i<n;i++) {
if(arr[i]<L) {
maxl+=(L-arr[i]);
}
if(arr[i]>R) {
maxr+=(arr[i]-R);
}
}
if(sum<n*L||sum>n*R) {
System.out.println("-1");
}else {
System.out.println(Math.max(maxr, maxl));
}
}
}