#include <iostream>
#include <algorithm>
#include <vector>
#include <climits>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int m, n;
cin >> m >> n;
vector<int> schools(m);
vector<int> students(n);
// 读取学校分数线
for (int i = 0; i < m; ++i) {
cin >> schools[i];
}
// 读取学生估分
for (int i = 0; i < n; ++i) {
cin >> students[i];
}
// 对学校分数线排序以便二分查找
sort(schools.begin(), schools.end());
long long total_dissatisfaction = 0;
for (int student_score : students) {
// 使用lower_bound找到第一个不小于学生分数的学校
auto it = lower_bound(schools.begin(), schools.end(), student_score);
int min_diff = INT_MAX;
// 检查找到的学校
if (it != schools.end()) {
min_diff = abs(*it - student_score);
}
// 检查前一个学校(如果存在)
if (it != schools.begin()) {
min_diff = min(min_diff, abs(*(it - 1) - student_score));
}
total_dissatisfaction += min_diff;
}
cout << total_dissatisfaction << endl;
return 0;
}
/**************************************************************
Problem: 1899
User: zhengzihao
Language: C++
Result: Accepted
Time:95 ms
Memory:3016 kb
****************************************************************/