fork(1) download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define fast_io ios::sync_with_stdio(0); cin.tie(0); cout.tie(0)
  5. #define int long long
  6. #define pb push_back
  7. #define ff first
  8. #define ss second
  9. #define all(x) (x).begin(), (x).end()
  10. #define rall(x) (x).rbegin(), (x).rend()
  11. #define sz(x) ((int)(x).size())
  12. #define endl '\n'
  13. #define yes cout << "yes\n"
  14. #define no cout << "no\n"
  15.  
  16. #define rep(i,a,b) for(int i=a;i<b;++i)
  17. #define per(i,a,b) for(int i=b-1;i>=a;--i)
  18. #define each(x, a) for (auto& x : a)
  19.  
  20. const int INF = 1e18;
  21. const int MOD = 1e9+7;
  22. const int N = 2e5 + 5;
  23.  
  24. int gcd(int a, int b) { return b == 0 ? a : gcd(b, a % b); }
  25. int lcm(int a, int b) { return (a / gcd(a, b)) * b; }
  26. int power(int a, int b, int m = MOD) {
  27. int res = 1;
  28. while (b > 0) {
  29. if (b & 1) res = res * a % m;
  30. a = a * a % m;
  31. b >>= 1;
  32. }
  33. return res;
  34. }
  35. int modinv(int a, int m = MOD) {
  36. return power(a, m - 2, m);
  37. }
  38.  
  39. void solve() {
  40. int n, m;
  41. cin >> n >> m;
  42. vector<int> odd, even;
  43. int sum = 0;
  44. rep(i,1,n+1) {
  45. int a;
  46. cin>>a;
  47. sum+=a;
  48. if (i%2 != 0) {
  49. odd.pb(a);
  50. } else {
  51. even.pb(a);
  52. }
  53. }
  54.  
  55. int odd1=0,even1=0;
  56. rep(i,0,m) {
  57. int b;
  58. cin>>b;
  59. if (b%2 != 0) {
  60. odd1++;
  61. } else {
  62. even1++;
  63. }
  64. }
  65.  
  66. sort(odd.rbegin(), odd.rend());
  67. sort(even.rbegin(), even.rend());
  68. int marked_sum = 0;
  69. if (odd1 > 0 && !odd.empty()) {
  70. marked_sum+=odd[0];
  71. int limit=min((int)odd1, (int)odd.size());
  72. for (int i=1;i<limit;i++) {
  73. if (odd[i] > 0) {
  74. marked_sum += odd[i];
  75. }
  76. }
  77. }
  78.  
  79. if (even1 > 0 && !even.empty()) {
  80. marked_sum += even[0];
  81. int limit = min((int)even1, (int)even.size());
  82. for (int i = 1; i < limit; i++) {
  83. if (even[i] > 0) {
  84. marked_sum += even[i];
  85. }
  86. }
  87. }
  88.  
  89. cout << sum - marked_sum << endl;
  90. }
  91.  
  92. int32_t main() {
  93. fast_io;
  94.  
  95. int t;
  96. cin >> t;
  97. while (t--) {
  98. solve();
  99. }
  100.  
  101. return 0;
  102. }
Success #stdin #stdout 0.01s 5288KB
stdin
6
7 4
1 2 3 4 5 6 7
1 2 3 4
7 4
1 -2 3 4 -5 -6 -7
7 6 5 4
7 5
21 -45 234 -8 423 12 -987
6 6 6 6 6
7 5
-21 45 -234 8 -423 -12 987
7 7 7 7 7
7 3
-1 2 -3 4 5 6 7
1 2 3
7 3
-1 -2 -3 -4 -5 -6 -7
1 2 3
stdout
6
-20
-362
-637
2
-25