Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- const int N = 100004; //is this limit correct?
- int main()
- {
- int n; cin >> n;
- int a[n];
- for(int i = 0; i < n; i++)
- cin >> a[i];
- int dp[n + 1][N]; memset(dp, 0, sizeof(dp));
- dp[0][0] = 1; //base case, no considerations, no elements in bags
- for(int i = 0; i < n; i++)
- {
- for(int j = 0; j < N; j++)
- {
- dp[i + 1][j] |= dp[i][j];
- if(j + a[i] < N)
- dp[i + 1][j + a[i]] |= dp[i][j];
- }
- }
- int ans = 0;
- for(int i = 2; i < N; i += 2)
- if(dp[n][i] and dp[n][i / 2])
- ans = max(ans, i / 2);
- cout << ans;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement