codeforces 160 Div2 B
2013-01-15 02:20
218 查看
B. Roma and Changing Signs
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
output
input
output
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.
先对数组排序,一开始用冒泡,结果超时了QAQ,改快排了。然后分两种情况,负数大于等于 change次数的 直接把负数从小到大依次change。负数比change次数小的,把负数都change,再排序,剩下change次数都对最小的数操作。
附代码:
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.
先对数组排序,一开始用冒泡,结果超时了QAQ,改快排了。然后分两种情况,负数大于等于 change次数的 直接把负数从小到大依次change。负数比change次数小的,把负数都change,再排序,剩下change次数都对最小的数操作。
附代码:
#include<stdio.h> #include<stdlib.h> int arr[100000]={0}; int cmp(const void *a,const void *b) { return *(int *)a-*(int *)b; } int main(void) { int n, k, i, j, sum=0, count=0; int temp; scanf("%d %d", &n, &k); for( i=0; i<n; i++) { scanf("%d", &arr[i]); if( arr[i]<0 ) count++; } qsort( arr, n, sizeof(int), cmp); if( count>k) { for( i=0; i<k; i++) arr[i]*=-1; } else if( count == k) { for( i=0; i<k; i++) arr[i]*=-1; } else { for( i=0; i<count; i++) arr[i]*=-1; qsort( arr, n, sizeof(int), cmp); for( i=0; i<(k-count); i++) arr[0]*=-1; } for( i=0; i<n; i++) sum+=arr[i]; printf("%d", sum); return 0; }
相关文章推荐
- codeforces 160 Div2 A
- codeforces 160 Div2 C
- codeforces div2 #152 小结
- codeforces 286 div2 B
- [数位DP] Codeforces 809C Round #415 (Div. 1) C. Find a car
- [DP] Codeforces 150D #107 (Div. 1) D. Mission Impassable
- codeforces基础题——#361(div2)D
- CodeForces 441E(Codeforces Round #252 (Div. 2))
- Codeforces 912D (Codeforces Round #456 Div. 2) Fishes 优先队列/BFS
- codeforces-div1-282-C
- Codeforces Round #425 (Div. 2) Problem A Sasha and Sticks (Codeforces 832A)
- Codeforces 716A Crazy Computer 【模拟】 (Codeforces Round #372 (Div. 2))
- 【Codeforces Round #372 (Div. 2)】Codeforces 716A Crazy Computer
- Codeforces 258 Div2
- Codeforces 715B & 716D Complete The Graph 【最短路】 (Codeforces Round #372 (Div. 2))
- codeforces 163 Div2 B
- 【Codeforces】Codeforces Round #373 (Div. 2)
- Codeforces Div. 2 #259-B. Little Pony and Sort by Shift
- 第二十五次codeforces竞技结束 #285 Div 2
- codeforces 260 div2 B题