Submission #1191009

#TimeUsernameProblemLanguageResultExecution timeMemory
1191009petezaKas (COCI17_kas)C++20
100 / 100
212 ms2464 KiB
#include <bits/stdc++.h>
using namespace std;

const int add = 120000;
int n, arr[505];
int sm, dp[250005], old[250005];

int main() {
    cin.tie(0) -> sync_with_stdio(0);
    cin >> n;
    for(int i=0;i<=250004;i++) old[i] = -9999999;
    old[add] = 0;
    for(int k=1;k<=n;k++) {
        cin >> arr[k];
        sm += arr[k];
        for(int i=0;i<=250004;i++) dp[i] = old[i];
        for(int i=0;i<=250004;i++) {
            if(i+arr[k] <= 250004) dp[i+arr[k]] = max(old[i], dp[i+arr[k]]);
            if(i-arr[k] >= 0) dp[i-arr[k]] = max(old[i] + arr[k], dp[i-arr[k]]);
        }
        for(int i=0;i<=250004;i++) old[i] = dp[i];
        //for(int i=add-20;i<=add+20;i++) cout << old[i] << ' ' ; cout << '\n';
    }
    cout << sm - old[add];
}
#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...