B. Roma and Changing Signs

来源:互联网 发布:关于大数据的书籍 编辑:程序博客网 时间:2024/05/16 13:57

time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

Roma works in a company that sells TVs. Now he has to prepare a report for the last year.

Roma has got a list of the company's incomes. The list is a sequence that consists of n integers. The total income of the company is the sum of all integers in sequence. Roma decided to perform exactly k changes of signs of several numbers in the sequence. He can also change the sign of a number one, two or more times.

The operation of changing a number's sign is the operation of multiplying this number by -1.

Help Roma perform the changes so as to make the total income of the company (the sum of numbers in the resulting sequence) maximum. Note that Roma should perform exactly k changes.

Input

The first line contains two integers n and k (1 ≤ n, k ≤ 105), showing, how many numbers are in the sequence and how many swaps are to be made.

The second line contains a non-decreasing sequence, consisting of n integers ai (|ai| ≤ 104).

The numbers in the lines are separated by single spaces. Please note that the given sequence is sorted in non-decreasing order.

Output

In the single line print the answer to the problem — the maximum total income that we can obtain after exactly k changes.

Sample test(s)
input
3 2-1 -1 1
output
3
input
3 1-1 -1 1
output
1
Note

In the first sample we can get sequence [1, 1, 1], thus the total income equals 3.

In the second test, the optimal strategy is to get sequence [-1, 1, 1], thus the total income equals 1.


解题说明:此题要求正好k个变换,要区分两种情况,k小于数列中的负数个数,k大于数列中的负数个数,第一种情况比较容易,针对第二种情况我们需要找出这个数列中最小的数,然后只在这个数上做变换即可。

#include<iostream>#include<map>#include<string>#include<algorithm>#include<cstdio>#include<cmath>using namespace std;int main(){int n, k, p=0, a, min=100001,i;scanf("%d %d",&n,&k);for (i=0; i<n; i++){scanf("%d",&a);if (abs(a)<min){min=abs(a);}if (k>0&&a<0){p-=a;k--;}else{p+=a;}}if(k%2==1){p-=2*min;}printf("%d\n",p);return 0;}


原创粉丝点击