Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
134036 | 周震东 | K 次取反后最大化的数组和 | C++ | 解答错误 | 33 | 0 MS | 260 KB | 717 | 2024-03-02 11:17:02 |
#include <bits/stdc++.h> using namespace std; int a[111111]; int main() { int n , k , sum = 0 , cnt = 0; cin >> n >> k; for(int i = 1 ; i <= n ; i++) { cin >> a[i]; if(a[i] < 0) { cnt++; } } int c = 0; sort(a + 1, a + n + 1); for(int i = 1 ; i <= k; i++) { if(a[i] < 0) { a[i] -= a[i]; c++; } } k -= c; sort(a + 1, a + n + 1); if(k > 0) { if((k) % 2 == 0 && k >= 1) { for(int i = 1 ; i <= n ; i++) { sum += a[i]; } } else { a[1] -= a[1] * 2; sort(a + 1, a + n + 1); for(int i = 1 ; i <= n ; i++) { sum += a[i]; } } } else { for(int i = 1 ; i <= n ; i++) { sum += a[i]; } } cout << sum; return 0; }