社区讨论

前面全绿,偏偏最后一个红!!!

P1678烦恼的高考志愿参与者 4已保存回复 4

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@mhju6nhy
此快照首次捕获于
2025/11/04 08:34
4 个月前
此快照最后确认于
2025/11/04 08:34
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n,m;
	cin>>n>>m;
	int z[n],x[m];
	for(int i=1;i<=n;i++) cin>>z[i];
	for(int i=1;i<=m;i++) cin>>x[i];
	sort(z+1,z+1+n);
	int t,l,r,d,o;
	for(int i=1;i<=m;i++)
	{
		t=x[i];
		l=1;r=n;
		while(l<r)
		{
			d=(l+r+1)/2;
			if(z[d]<=t)
			{
				l=d;
			}
			else if(z[d]>t)
			{
				r=d-1;
			}
		}
		if(abs(t-z[l+1])<abs(t-z[l])&&l+1<=n) o+=abs(t-z[l+1]);
		else if(abs(t-z[l-1])<abs(t-z[l])&&l-1>0) o+=abs(t-z[l-1]);
		else o+=abs(t-z[l]);
	}
	cout<<o;
	return 0;
} 
using namespace std; int main() { int n,m; cin>>n>>m; int z[n],x[m]; for(int i=1;i<=n;i++) cin>>z[i]; for(int i=1;i<=m;i++) cin>>x[i]; sort(z+1,z+1+n); int t,l,r,d,o; for(int i=1;i<=m;i++) { t=x[i]; l=1;r=n; while(l<r) { d=(l+r+1)/2; if(z[d]<=t) { l=d; } else if(z[d]>t) { r=d-1; } } if(abs(t-z[l+1])<abs(t-z[l])&&l+1<=n) o+=abs(t-z[l+1]); else if(abs(t-z[l-1])<abs(t-z[l])&&l-1>0) o+=abs(t-z[l-1]); else o+=abs(t-z[l]); } cout<<o; return 0; }

回复

4 条回复,欢迎继续交流。

正在加载回复...