Advertisement
Paimoe

Untitled

Mar 27th, 2024 (edited)
376
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.28 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. vector<int> v;
  5.  
  6. long long getmindiff(vector<int> v) {
  7.     int n = v.size();
  8.  
  9.     long long sumAll = 0;
  10.     for (auto num : v)
  11.         sumAll += num;
  12.  
  13.     bool isOdd = (sumAll & 1);
  14.     sumAll >>= 1;
  15.     vector<int> dp(sumAll + 1, false);
  16.  
  17.     dp[0] = true;
  18.     for (int i = 0; i < n; ++i)
  19.         for (long long j = sumAll; j >= v[i]; --j)
  20.             dp[j] = dp[j] || dp[j - v[i]];
  21.  
  22.     int result = 0;
  23.     for (long long i = sumAll; i > 0; --i) {
  24.         if (dp[i]) {
  25.             result = (sumAll - i) << 1;
  26.             break;
  27.         }
  28.     }
  29.     return int(isOdd ? result + 1 : result);
  30. }
  31.  
  32. void func() {
  33.  
  34.     int n = 0;
  35.     cin >> n;
  36.     for (int i = 0; i < n; i++) {
  37.         int a = 0;
  38.         cin >> a;
  39.         v.push_back(a);
  40.     }
  41.  
  42.     for (int i = 0; i < n; i++) {
  43.         vector<int> v_ = v;
  44.         v_[i] = 0;
  45.         int diff = getmindiff(v_);
  46.         if (diff < v[i]) {
  47.             cout << 1;
  48.         } else {
  49.             cout << 0;
  50.         }
  51.         if (i != n - 1) {
  52.             cout << " ";
  53.         } else {
  54.             cout << endl;
  55.         }
  56.     }
  57. }
  58.  
  59. int main() {
  60.     int T = 0;
  61.     cin >> T;
  62.     for (int i = 0; i < T; i++) {
  63.         func();
  64.         v.clear();
  65.     }
  66.  
  67.     return 0;
  68. }
  69.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement