计算机竞赛小组的蒜头君终于结束了万恶的高考,然而作为班长的他还不能闲下来,班主任给了他一个艰巨的任务:帮同学找出最合理的大学填报方案。可是蒜头君太忙了,于是他想到了同为计算机竞赛小组的你,请你帮他完成这个艰巨的任务。
根据 n 位学生的估分情况,分别给每位学生推荐一所学校,要求学校的预计分数线和学生的估分相差最小(可高可低,毕竟是估分嘛),这个最小值为不满意度。求所有学生不满意度和的最小值。
读入数据有三行,第一行读入两个整数m,n(1≤m,n≤10的5次方),m 表示学校数,n 表示学生数,两数之间以一个空格分隔。
第二行共有 m 个正整数,表示 m 个学校的预计录取分数,不超过 10的6次方,相邻两数之间以一个空格分隔。
第三行有 n 个正整数,表示 n 个学生的估分成绩,不超过 10的6次方,相邻两数之间以一个空格分隔。
输出数据有一行,为最小的不满度之和。
输出时每行末尾的多余空格,不影响答案正确性
要求使用「文件输入输出」的方式解题,输入文件为 exam.in,输出文件为 exam.out
4 3
513 598 567 689
500 600 550
32
#include<bits/stdc++.h>
using namespace std;
int main()
{
freopen ("exam.in", "r", stdin);
freopen ("exam.out", "w", stdout);
int n, m;
cin >> m >> n;
int school[m], grade[n];
for (int i = 0; i < m; i++) {
cin >> school[i];
}
sort (school, school + m);
for (int i = 0; i < n; i++) {
cin >> grade[i];
}
long long uns = 0;
for (int i = 0;i < n; i++) {
int a = abs (grade[i] - (lower_bound (school, school + m, grade[i]) - school));
if (lower_bound (school, school + m, grade[i]) - 1 >= 0) {
int b = abs (grade[i] - (lower_bound (school, school + m, grade[i]) - 1 - school));
} else {
int b = a + 1;
}
if (a > b) {
uns += b;
} else {
uns += a;
}
}
cout << uns << endl;
return 0;
}
我的报错:
Main.cpp: In function 'int main()':
Main.cpp:26:17: error: 'b' was not declared in this scope
if (a > b) {
^
compilation terminated due to -Wfatal-errors.
我的b在上面明明定义了,他为什么告诉我没有定义