#include <iostream>
using namespace std;
const int N = 510;
const int M = 1e5 + 10;
int n, a[N], sum;
int dp[2][M];
int main() {
cin.tie(0); cout.tie(0);
ios_base::sync_with_stdio(false);
cin >> n;
for (int i = 1; i <= n; ++i) {
cin >> a[i];
sum += a[i];
}
fill_n(dp[0] + 1, sum, 1e9);
for (int i = 1; i <= n; ++i) {
int b = i & 1;
for (int j = 0; j <= sum; ++j) {
int Min = dp[b ^ 1][j] + a[i];
if (j + a[i] <= sum) Min = min(dp[b ^ 1][j + a[i]], Min);
Min = min(dp[b ^ 1][abs(j - a[i])], Min);
dp[b][j] = Min;
}
}
int ans = sum - dp[n & 1][0];
cout << ans / 2 + dp[n & 1][0] << "\n";
return 0;
}
| # | 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... |