#include <bits/stdc++.h>
using namespace std;
#define N 100'001
int dp[501][N];
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
const int inf = 1e9;
int n;
cin >> n;
for (int i = 0; i < n; i++) {
for (int j = 0; j < N; j++) {
dp[i][j] = -inf;
}
}
dp[0][0] = 0;
int sum = 0;
for (int i = 1; i <= n; i++) {
int x;
cin >> x;
sum += x;
for (int j = 0; j < N; j++) {
if (j + x < N && dp[i - 1][j] >= 0) {
dp[i][j + x] = max(dp[i][j + x], dp[i - 1][j] + x);
}
if (dp[i - 1][j] >= 0) {
dp[i][abs(j - x)] = max(dp[i][(j - x)], dp[i - 1][j] + x);
dp[i][j] = max(dp[i][j], dp[i - 1][j]);
}
}
}
cout << sum - dp[n][0] / 2;
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... |