求大佬指点

P1678 烦恼的高考志愿

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,无意中改成>=就过了,可以麻烦大佬们解释一下下嘛?我的想法是当这个分差相同的时候,两个学校都一样,没区别。


|