#include <cmath>
#include <iostream>
int main() {
std::ios_base::sync_with_stdio(false);
std::cin.tie(nullptr);
int N, M;
std::cin >> N >> M;
long long result = 0;
long long min = 1e9 + 1;
long long max = -1e9 - 1;
for (int i = 0; i < N + M + 1; i++) {
long long a;
std::cin >> a;
max = std::max(a, max);
min = std::min(a, min);
if (M == 0) { //如果全是加号,就不存在abs这个操作了。
result += a;
} else {
result += std::abs(a);
}
}
if (M != 0 && max < 0) { // 特殊情况之1,有减号且全是负数,就把最大的那个负数给加回去。
result += 2 * max;
}
if (M != 0 && min > 0) { // 特殊情况之2,有减号且全是正数,那就必须得减掉一个正的,就把最小的那个正数减回去。
result -= 2 * min;
}
std::cout << result;
return 0;
}
这题我采用了面向测试样例的解题方法。。。把所有的特殊情况都处理掉就过了。。。要是正赛直接GG。。。