Advertisement
S_Aditya

Untitled

Mar 24th, 2021
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.65 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef long long ll;
  4. const int N = 100004; //is this limit correct?
  5.  
  6. int main()                  
  7. {
  8.     int n; cin >> n;
  9.  
  10.     int a[n];
  11.  
  12.     for(int i = 0; i < n; i++)
  13.     cin >> a[i];
  14.  
  15.     int dp[n + 1][N]; memset(dp, 0, sizeof(dp));
  16.  
  17.     dp[0][0] = 1; //base case, no considerations, no elements in bags  
  18.  
  19.     for(int i = 0; i < n; i++)
  20.     {
  21.         for(int j = 0; j < N; j++)
  22.         {
  23.             dp[i + 1][j] |= dp[i][j];
  24.  
  25.             if(j + a[i] < N)
  26.             dp[i + 1][j + a[i]] |= dp[i][j];
  27.         }
  28.     }
  29.  
  30.     int ans = 0;
  31.  
  32.     for(int i = 2; i < N; i += 2)
  33.     if(dp[n][i] and dp[n][i / 2])
  34.     ans = max(ans, i / 2);
  35.  
  36.     cout << ans;
  37.  
  38.     return 0;
  39. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement