社区讨论
60玄关求调,必关!!!
P1109学生分组参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mlnewfhq
- 此快照首次捕获于
- 2026/02/15 15:16 4 天前
- 此快照最后确认于
- 2026/02/15 23:40 4 天前
测试点不该输出-1输出-1,但是我感觉判断条好像没错
CPP#include<iostream>
#include<algorithm>
using namespace std;
long long n,m,a[60],l,r,mid1=-1,mid2=-1;
bool f1=1,f2=1;
int main(){
cin>>n;
int sum=0;
for(int i=0;i<n;i++){
cin>>a[i];
sum+=a[i];
}
cin>>l>>r;
sort(a,a+n);
int bu1=0;
int ge2=0,bu2=0;
int ge3=0;
//1.记录与边界差值
for(int i=0;i<n;i++){
if(a[i]<l){
bu1+=l-a[i];
}else if(a[i]>=l&&a[i]<=r){
ge2+=a[i]-l;
bu2+=r-a[i];
}else if(a[i]>r){
ge3+=a[i]-r;
}
}
// cout<<"bu1 "<<bu1<<endl;
// cout<<"ge2 "<<ge2<<" bu2 "<<bu2<<endl;
// cout<<"ge3 "<<ge3<<endl;
if(bu1==ge3){
cout<<bu1;
}else if(bu1>ge3){//用第二段补
int sheng=bu1-ge3;
if(sheng<=ge2) cout<<ge3+sheng;
else cout<<-1;
}else if(bu1<ge3){//去填第二段
int duo=ge3-bu1;
if(duo<=bu2) cout<<bu1+duo;
else cout<<-1;
}
return 0;
}
/*
5
50 10 20 20 5
15 30
*/
回复
共 2 条回复,欢迎继续交流。
正在加载回复...