Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <vector>
- #include <set>
- #include <map>
- #include <bitset>
- #include <algorithm>
- #include <iomanip>
- #include <cmath>
- #include <unordered_set>
- #include <unordered_map>
- #include <queue>
- #include <deque>
- #include <stack>
- #include <cstring>
- #include <numeric>
- using namespace std;
- typedef long long ll;
- typedef long double ld;
- typedef pair<int,int> pii;
- typedef pair<ll,ll> pll;
- #define FOR(i, k, l) for(int i = k; i < l; i++)
- #define DFOR(i, k, l) for(int i = k - 1; i >= l; i--)
- #define FA(i, k) for(int i = 0; i < int(k.size()); i++)
- #define DFA(i, k) for(int i = int(k.size()) - 1; i > -1; i--)
- #define ASKS(i) for(cin >> (i); (i)--;)
- #define MAXINT 2147483647
- #define endl '\n'
- #define all(x) x.begin(), x.end()
- #define rall(x) x.rbegin(), x.rend()
- #define fi first
- #define se second
- bool dp[110][100011];
- int a[110];
- int main() {
- ios::sync_with_stdio(0);
- cin.tie(0);
- cout.tie(0);
- int n;
- cin >> n;
- int sum = 0;
- FOR(i, 1, n+1) {
- cin >> a[i];
- sum+= a[i];
- }
- sort(a, a+n+1);
- FOR(i,0,n+1) dp[i][0] = 1;
- FOR(i, 1, n+1) {
- FOR(j, 1, sum+1) {
- if(j >= a[i])
- dp[i][j] |= dp[i-1][j-a[i]];
- else dp[i][j] |= dp[i-1][j];
- }
- }
- int ans = sum;
- FOR(i, 0, sum+1) {
- if(dp[n][i]) {
- if(max(i, sum - i) < ans)
- ans = max(i, sum - i);
- }
- }
- cout << ans << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment