제출 #92437

#제출 시각아이디문제언어결과실행 시간메모리
92437wolfKas (COCI17_kas)C++14
0 / 100
2 ms452 KiB
#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];
    }

    int mnrem = solve(0 , M);
    int ans = (sum - mnrem) / 2 + mnrem;
    cout << ans;
  
   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...