Advertisement
ivnikkk

Untitled

Jul 23rd, 2022
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.28 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #define debug(tl) cerr<<#tl<<' '<<tl<<'\n';
  3. #include "bits/stdc++.h"
  4. using namespace std;
  5. #define all(d) d.begin(), d.end()
  6. typedef long long ll;
  7. constexpr int N = 5e4 + 1;
  8. bitset<N> dp[51][51];
  9. signed main() {
  10. #ifdef _DEBUG
  11.     freopen("input.txt", "r", stdin);
  12.     freopen("output.txt", "w", stdout);
  13. #endif
  14.     ios_base::sync_with_stdio(false);
  15.     cin.tie(nullptr);
  16.     cout.tie(nullptr);
  17.     int t; cin >> t;
  18.     while (t--) {
  19.         int n; cin >> n;
  20.         vector<int> a(n);
  21.         int sum = 0;
  22.         for (int i = 0; i < n; i++) {
  23.             cin >> a[i];
  24.             sum += a[i];
  25.         }
  26.         bitset<N> dp2[51];
  27.         sort(all(a));
  28.         int x = 0, ans = 0;
  29.         for (int i = 1; i <= n; i++) {
  30.  
  31.             bitset<N>dp1[51];
  32.             dp1[0][0] = 1;
  33.             dp2[0][0] = 1;
  34.             for (int k = 1; k <= n; k++) {
  35.  
  36.                 for (int j = a[0]; j < sum; j++) {
  37.                    
  38.                     dp1[k][j] = dp2[k][j];
  39.                     if (a[i - 1] > j) {
  40.                         continue;
  41.                     }
  42.                     else {
  43.                         dp1[k][j] = (dp1[k][j] | dp2[k - 1][j - a[i - 1]]);
  44.                     }
  45.                 }
  46.             }
  47.             for (int i = 0; i <= n; i++) {
  48.                 dp2[i] = dp1[i];
  49.             }
  50.         }
  51.         for (int j = a[0]; j <= sum; j++) {
  52.             int cnt = 0;
  53.             bool dp1 = false;
  54.             for (int k = 1; k <= n; k++) {
  55.                 cnt += dp2[k][j];
  56.             }
  57.             if (cnt > ans) {
  58.                 x = j; ans = cnt;
  59.             }
  60.         }
  61.         cout << ans << ' ' << x << '\n';
  62.     }
  63.  
  64.  
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement