woqifeile @ 2021-01-20 21:04:14
#include<iostream>
#include<algorithm>
using namespace std;
int stdl[100020];
int school[100020];
int main()
{
int n, m;
cin >> m >> n;
for (int i = 0; i < m; i++)
cin >> school[i];
for (int i = 0; i < n; i++)
cin >> stdl[i];
sort(school, school + m);
sort(stdl, stdl + n);
long long int sum=0;
int sch = 0;
for (int i = 0; i < n; i++) {
for (sch; abs(school[sch] - stdl[i]) >= abs(school[sch + 1] - stdl[i]); sch++);
sum += abs(school[sch] - stdl[i]);
}
cout << sum<<endl;
return 0;
}
/*m所学校,n个学生
输出不满意度之和*/
这个,在
for (sch; abs(school[sch] - stdl[i]) >= abs(school[sch + 1] - stdl[i]); sch++);
这一步中,我之前用的>而不是>=,就一直导致WA,无意中改成>=就过了,可以麻烦大佬们解释一下下嘛?我的想法是当这个分差相同的时候,两个学校都一样,没区别。