fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define FAST std::ios_base::sync_with_stdio(0); cin.tie(NULL); cout.tie(0);
  4. #define int long long
  5. int32_t main (){
  6. FAST
  7. int tc; cin >> tc;
  8. while (tc--) {
  9. int n, k; cin >> n >> k;
  10. vector<int> a(n);
  11.  
  12. int sum = 0;
  13. for (int i = 0; i < n; ++i) {
  14. cin >> a[i];
  15. sum += a[i];
  16. }
  17. sort(a.begin(), a.end());
  18.  
  19. vector<int> leftPre(n + 1),rightPre(n + 1);
  20. for (int i = 1; i <= n; ++i)
  21. leftPre[i] = leftPre[i - 1] + a[i - 1];
  22.  
  23. for (int i = n; i >= 1; --i) {
  24. if (i == n)
  25. rightPre[i] = a[i - 1];
  26. else
  27. rightPre[i] = rightPre[i + 1] + a[i - 1];
  28. }
  29.  
  30. int l = 0, r = n - k + 1;
  31. int ans = 0;
  32. while (l <= k * 2 || r <= n) {
  33. int deletedRight = 0, deletedLeft = 0;
  34. if (r <= n) {
  35. deletedRight = rightPre[r];
  36. ++r;
  37. }
  38.  
  39. if (l <= k * 2) {
  40. deletedLeft = leftPre[l];
  41. l += 2;
  42. }
  43.  
  44. ans = max(ans, sum - deletedRight - deletedLeft);
  45. }
  46.  
  47. cout << ans << "\n";
  48. }
  49. return 0;
  50. }
Success #stdin #stdout 0.01s 5516KB
stdin
6
5 1
2 5 1 10 6
5 2
2 5 1 10 6
3 1
1 2 3
6 1
15 22 12 10 13 11
6 2
15 22 12 10 13 11
5 1
999999996 999999999 999999997 999999998 999999995
stdout
21
11
3
62
46
3999999986