2501: 【普及-】【P1678】烦恼的高考志愿
内存限制:128 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:20
解决:9
题目描述
现有 所学校,每所学校预计分数线是 。有 位学生,估分分别为 。
根据 位学生的估分情况,分别给每位学生推荐一所学校,要求学校的预计分数线和学生的估分相差最小(可高可低,毕竟是估分嘛),这个最小值为不满意度。求所有学生不满意度和的最小值。
输入
第一行读入两个整数 。 表示学校数, 表示学生数。
第二行共有 个数,表示 个学校的预计录取分数。第三行有 个数,表示 个学生的估分成绩。
输出
输出一行,为最小的不满度之和。
样例输入 复制
4 3
513 598 567 689
500 600 550
样例输出 复制
32
提示
数据范围:
对于 的数据,,估分和录取线 ;
对于 的数据,,估分和录取线 且均为正整数。
#include<bits/stdc++.h> using namespace std; int n,a[100005],m,t; long long ans=0; int find(int x) { if (x<=a[1]) return a[1]-x; else if (x>=a[n]) return x-a[n]; int l=1,r=n+1; while (l<=r) { int mid=l+(r-l)/2; if (a[mid]==x) return 0; else if (a[mid]>x) r=mid-1; else l=mid+1; } return min(abs(a[l]-x),abs(a[r]-x)); } int main(){ scanf("%d %d",&n,&m); for (int i=1;i<=n;i++) { scanf("%d",&a[i]); } sort(a+1,a+n+1); for (int i=1;i<=m;i++) { scanf("%d",&t); ans+=find(t); } printf("%ld",ans); return 0; }