#include <bits/stdc++.h>
using namespace std;
int main() {
cin.tie(0)->sync_with_stdio(0);
int n;
cin>> n;
int sm=0;
vector<int> a(n+1);
for (int i=1; i<=n; i++) {
cin>> a[i];
sm+=a[i];
}
vector<vector<int>> dp(n+1, vector<int>(sm+1, -1));
dp[0][0] = 0;
for (int i=1; i<=n; i++) {
int x = a[i];
for (int j=0; j<=sm-x; j++) {
dp[i][j] = dp[i-1][j];
if (dp[i-1][abs(j-x)] != -1) dp[i][j] = max(dp[i-1][abs(j-x)]+x, dp[i][j]);
if (dp[i-1][abs(j+x)] != -1) dp[i][j] = max(dp[i-1][abs(j+x)]+x, dp[i][j]);
}
}
int ans = dp[n][0]/2 + (sm-dp[n][0]);
cout<< ans;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |