那个好心人能告诉我最后一个点是啥
查看原帖
那个好心人能告诉我最后一个点是啥
967271
wuqing_baiyu楼主2024/3/4 21:26

代码在下面,交上去就是不对……

#include<bits/stdc++.h> 
using namespace std;
int x[100005],y[100005];
int m,n;
int main(){
	cin>>m>>n;
	for(int i=1;i<=m;i++){//输入录取分数
		cin>>x[i];
	}
    for(int i=1;i<=n;i++){//输入估分
		cin>>y[i];
	}
	sort(x+1,x+m+1);//排序
	int cnt=0;
	for(int i=1;i<=n;i++){//为n个学生寻找要循环n次
		int l=0,r=m+1;//初始化指针
		while(l<r){
			int mid=(l+r)/2;//中点
			if(x[mid]<=y[i]){//如果你的分够就往上走
				l=mid+1;
			}
			else{//下去吧你
				r=mid;
			}
		}
		if(y[i]<=x[1]){//你连最烂的都考不上
			cnt+=x[1]-y[i];//你的不满意度我也只能“笑纳”了
		}
		else{//计算最小的不满意度
			cnt+=min(abs(x[l-1]-y[i]),abs(x[l]-y[i]));//不能是负的(abs)
		}
	}
	cout<<cnt;
	return 0;
}

好心人请调

2024/3/4 21:26
加载中...