Submission #1290850

#TimeUsernameProblemLanguageResultExecution timeMemory
1290850MinhKienKas (COCI17_kas)C++20
100 / 100
67 ms1220 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...