Advertisement
ivnikkk

Untitled

Jul 23rd, 2022
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.26 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. signed main() {
  9. #ifdef _DEBUG
  10.     freopen("input.txt", "r", stdin);
  11.     freopen("output.txt", "w", stdout);
  12. #endif
  13.     ios_base::sync_with_stdio(false);
  14.     cin.tie(nullptr);
  15.     cout.tie(nullptr);
  16.     int t; cin >> t;
  17.     while (t--) {
  18.         int n; cin >> n;
  19.         vector<int> a(n);
  20.         int sum = 0;
  21.         for (int i = 0; i < n; i++) {
  22.             cin >> a[i];
  23.             sum += a[i];
  24.         }
  25.         bitset<N> dp2[51];
  26.         sort(all(a));
  27.         int x = 0, ans = 0;
  28.         for (int i = 1; i <= n; i++) {
  29.  
  30.             bitset<N>dp1[51];
  31.             dp1[0][0] = 1;
  32.             dp2[0][0] = 1;
  33.             for (int k = 1; k <= n; k++) {
  34.  
  35.                 for (int j = a[0]; j < sum; j++) {
  36.                    
  37.                     dp1[k][j] = dp2[k][j];
  38.                     if (a[i - 1] > j) {
  39.                         continue;
  40.                     }
  41.                     else {
  42.                         dp1[k][j] = (dp1[k][j] | dp2[k - 1][j - a[i - 1]]);
  43.                     }
  44.                 }
  45.             }
  46.             for (int i = 0; i <= n; i++) {
  47.                 dp2[i] = dp1[i];
  48.             }
  49.         }
  50.         for (int j = a[0]; j <= sum; j++) {
  51.             int cnt = 0;
  52.             bool dp1 = false;
  53.             for (int k = 1; k <= n; k++) {
  54.                 cnt += dp2[k][j];
  55.             }
  56.             if (cnt > ans) {
  57.                 x = j; ans = cnt;
  58.             }
  59.         }
  60.         cout << ans << ' ' << x << '\n';
  61.     }
  62.  
  63.  
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement