链接:
https://www.nowcoder.com/acm/contest/113/B
来源:牛客网
来源:牛客网
题目描述
给长度为n的序列A,长度为m的序列B。可以给A序列里每个元素加上x且B序列里每个元素减去x (x可以是负数),问
的最小值
输入描述:
第一行两个整数分别表示n,m 接下来一行n个整数表示序列A 接下来一行m个整数表示序列B
输出描述:
输出一个整数表示答案
#include <bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pb push_back
#define mset(a,b) memset(a,b,sizeof(a))
#define sz size()
#define cl clear()
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define PI 3.1415926535897932384626433832795028841971693993751058209749445923078164
typedef long long LL;
typedef pair<int,int> pr;
const int inf = 99999999;
const double eps = 1e-8;
const int dir4[4][2] = {{-1,0},{1,0},{0,-1},{0,1}};
const int dir8[8][2] = {{1,0},{-1,0},{0,1},{0,-1},{1,1},{1,-1},{-1,1},{-1,-1}};
const int mon[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
const int monn[] = {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
const int maxn = 2e5 + 10;
const int mod = 1e9 + 7;
int a[maxn], n, m, x;
int main() {
scanf("%d%d", &n, &m);
for (int i = 1 ; i <= m + n ; i++) {
scanf("%d", &x);
if (i <= n) a[i] = x;
else a[i] = -x;
}
sort(a + 1, a + n + m + 2);
LL sum = 0;
for (int i = 1 ; i <= n + m + 1 ; i++ )
sum += (LL)(abs(a[i] - a[(n + m + 2) / 2]));
printf("%lld\n", sum);
return 0;
}