LeetCode 1247. 后缀表达式
原题链接
中等
作者:
Mr_Ren
,
2020-02-11 16:15:37
,
所有人可见
,
阅读 634
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int main(void)
{
int n,m;
cin>>n>>m;
long long sum = 0;//绝对值的总和
int z = 0; //正数,包括0
int f = 0; //负数
long long num = 0;//数的总和;
long long minz = 1e10;
long long maxf = -1e10;
for(int i = 1;i <= n+m+1;i++)
{
long long t;
cin>>t;
sum += abs(t);
num += t;
if(t>=0)
{
z++;
minz = min(minz,t);
}
else
{
f++;
maxf = max(maxf,t);
}
}
long long answer = 0;
if(f == m)
{
answer = sum;
}
else if(m == 0)
{
answer = num;
}
else if(f > m)//负数个数大于m负号
{
if(z == 0)
{
answer = sum+maxf*2;
}
else
{
answer = sum;
}
}
else
{
if(f == 0)
{
answer = sum-minz*2;
}
else
{
answer = sum;
}
}
cout<<answer<<endl;
return 0;
}