#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... |