/
C262B.java
77 lines (62 loc) · 1.83 KB
/
C262B.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/**
* */
public class C262B {
public class Income{
public int value=0;
public Integer absValue=0;
public Income(int value){
this.value=value;
this.absValue=(int) Math.abs(this.value);
}
public String toString(){ return String.valueOf(this.value); }
}
public Income newIncome(int value){ return new Income(value); }
public class IncomeComparator implements Comparator<Income>{
public int compare(Income o1, Income o2) {
return o1.absValue.compareTo(o2.absValue);
}}
public IncomeComparator newIncomeComparator(){ return new IncomeComparator(); }
/**
* @param args
*/
public static void main(String[] args) {
/***/
C262B solution=new C262B();
BufferedReader reader =new BufferedReader(
new InputStreamReader(System.in)); // STDIN
try {
String[] nk=reader.readLine().trim().split(" ", 2);
int n=Integer.valueOf(nk[0].trim());
int k=Integer.valueOf(nk[1].trim());
String[] strIncomes=reader.readLine().split(" ", n);
List<Income> listIncomes=Collections.synchronizedList(new ArrayList<Income>());
for(int i=0;i!=n;i++)
listIncomes.add(solution.newIncome(Integer.valueOf(strIncomes[i].trim())));
Collections.sort(listIncomes,solution.newIncomeComparator());
int sum=0;
int i=n-1;
while(i>=0){
if((k>0)&&(listIncomes.get(i).value<0)){
sum+=listIncomes.get(i).absValue;
k--;
}else{
sum+=listIncomes.get(i).value;
}
i--;
}
if((k>0)&&((k%2)!=0))
sum-=(2*listIncomes.get(0).absValue);
System.out.println(sum);
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}