标签:P1678 int 高考 mid long abs 估分 res 志愿
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int M = 1e6 + 10;
int m, n, k;//m表示学校数,n表示学生
int a[M];
long long res;
int main() {
cin >> m >> n;
for (int i = 1; i <= m; i++) cin >> a[i];
sort(a + 1, a + m + 1);
/*根据n位学生的估分情况,分别给每位学生推荐一所学校,要求学校的预计分数线和学生的估分相差最小
(可高可低,毕竟是估分嘛),这个最小值为不满意度。求所有学生不满意度和的最小值。*/
for (int i = 1; i <= n; i++) {
cin >> k;
//通过二分,找到离此学生分数高的第一所大学,并计算出不满意度,累加
int l = 1, r = m;
while (l < r) {
int mid = l + r >> 1;
if (a[mid] >= k) r = mid;
else l = mid + 1;
}
//看不上的大学与考不上的大学,仔细口味下哪个的估分差最小。
if (l > 1) res += min(abs(a[l] - k), abs(a[l - 1] - k));
else res += abs(a[l] - k);
}
cout << res << endl;
return 0;
}
标签:P1678,int,高考,mid,long,abs,估分,res,志愿 来源: https://www.cnblogs.com/littlehb/p/15597921.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。