**
试题I:后缀表达式(25分)
**
给定N个加号,M个减号以及N+M+1个整数,A1+A2+…+Am+An+1,小明想知道在所有由这n个加号,M个减号以及N+M+1个整数凑出的合法的后缀表达式中,结果最大的是哪一个?请输出这个最大的结果。
假如使用1 2 3+ -,则“2 3 + 1 -”这个后缀表达式的结果是4,是最大的。
【输入格式】第一行包含两个整数N和M
第二行包含N+M+1个整数 A1,A2,…AN+AM+1
【输出格式】数出一个整数代表答案。
【样例输入】
1 1
1 2 3
【样例输出】
4
原题截图
参考代码C++
#include<iostream>
#include<algorithm>
using namespace std;
int a[100000];
int main()
{
long long N, M, k, sum = 0;//k保存总数,sum记录总和
cin >> N >> M;
k = N + M + 1;
for (int i = 0; i < k; i++)
{
cin >> a[i];//输入所有数据
sum += a[i];//sum记录总和
}
sort(a, a + k);//排序
if (M != 0)//没有负号,直接输出
{
for (int i = 0; i < M; i++)
sum = sum - 2 * a[i];
}
cout << sum;
return 0;
}