Submission #92439

# Submission time Handle Problem Language Result Execution time Memory
92439 2019-01-02T20:52:34 Z wolf Kas (COCI17_kas) C++14
100 / 100
958 ms 395896 KB
#include <bits/stdc++.h>

using namespace std;

using vi = vector<int> ;
using ll = long long;

#define pb push_back
#define inf 0x3f3f3f3f
#define all(v) (v).begin() , (v).end()
#define ones(n) __builtin_popcount(n)

const int N = 505 , M = 1e5 + 5;
int n;
int arr[N] , memo[N][2 * M];

int solve (int i , int d) {
    if (i == n)
        return d == M ? 0 : inf;
    int &ret = memo[i][d];
    if (~ret)
        return ret;
    return ret = min(min(solve(i + 1 , d - arr[i]) , solve(i + 1 , d + arr[i])) , solve(i + 1 , d) + arr[i]);
}

int main() {
    int sum = 0;
    cin >> n;
    for (int i = 0 ;i < n ;i++) {
        cin >> arr[i];
        sum += arr[i];
    }

    memset(memo , -1 , sizeof memo);
    int mnrem = solve(0 , M);
    int ans = (sum - mnrem) / 2 + mnrem;
    cout << ans;

    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 283 ms 395896 KB Output is correct
2 Correct 274 ms 395640 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 269 ms 395640 KB Output is correct
2 Correct 306 ms 395588 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 291 ms 395572 KB Output is correct
2 Correct 280 ms 395856 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 277 ms 395572 KB Output is correct
2 Correct 298 ms 395616 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 285 ms 395708 KB Output is correct
2 Correct 280 ms 395640 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 283 ms 395664 KB Output is correct
2 Correct 275 ms 395640 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 306 ms 395608 KB Output is correct
2 Correct 307 ms 395768 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 400 ms 395728 KB Output is correct
2 Correct 310 ms 395668 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 412 ms 395796 KB Output is correct
2 Correct 423 ms 395640 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 574 ms 395592 KB Output is correct
2 Correct 958 ms 395876 KB Output is correct