fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define int long long
  5.  
  6. const long double PI = 3.14159265359;
  7.  
  8. void solve()
  9. {
  10. int n;
  11. cin >> n;
  12. vector<int> arr(n + 1);
  13. for (int i = 1; i <= n; i++)
  14. cin >> arr[i];
  15.  
  16. int sum = 0;
  17.  
  18. int parity[] = {n / 2, (n + 1) / 2};
  19. // magn, sign, even - odd position
  20. vector<array<int, 3>> vals;
  21. for (int i = 1; i <= n; i++)
  22. {
  23. vals.push_back({abs(arr[i]), arr[i] < 0, i % 2});
  24. }
  25.  
  26. sort(vals.rbegin(), vals.rend());
  27.  
  28. for (int i = 0; i < vals.size(); i++)
  29. {
  30. if (vals[i][1] == 0)
  31. {
  32. // pos
  33. if (parity[vals[i][2]])
  34. sum += vals[i][0], parity[vals[i][2]]--;
  35. else
  36. sum -= vals[i][0], parity[!vals[i][2]]--;
  37. }
  38. else
  39. {
  40. // neg
  41. if (parity[!vals[i][2]])
  42. sum += vals[i][0], parity[!vals[i][2]]--;
  43. else
  44. sum -= vals[i][0], parity[vals[i][2]]--;
  45. }
  46. }
  47. cout << sum << '\n';
  48. }
  49.  
  50. signed main(void)
  51. {
  52. ios_base::sync_with_stdio(0);
  53. cin.tie(0);
  54. cout.tie(0);
  55. if (fopen("input.txt", "r"))
  56. {
  57. freopen("input.txt", "r", stdin);
  58. freopen("output.txt", "w", stdout);
  59. }
  60. int t = 1;
  61. cin >> t;
  62. while (t--)
  63. {
  64. solve();
  65. }
  66. return 0;
  67. }
Success #stdin #stdout 0.01s 5320KB
stdin
4
1
-3
4
1 -2 -3 4
5
-10 1 0 1 -10
2
6 -7
stdout
-3
10
18
1