Submission #994138

#TimeUsernameProblemLanguageResultExecution timeMemory
994138vjudge1Kas (COCI17_kas)C++17
100 / 100
68 ms1984 KiB
#include<bits/stdc++.h> using namespace std; typedef long long ll; const ll SM = 1e5+1, inf = 1e10; ll dp[2][SM]; int main() { ll n; cin >> n; ll a[1 + n]; ll x = 0; for(int i = 1; i <= n; ++i) { cin >> a[i]; x += a[i]; } for(int j = 1; j <= x; j++) dp[0][j] = -inf; for(int i = 1; i <= n; i ++) { bool b = i & 1, nb = !b; for(int j = 0; j <= x; j++) { dp[b][j] = dp[nb][j]; if(j >= a[i]) dp[b][j] = max(dp[b][j], dp[nb][j - a[i]]); else dp[b][j] = max(dp[b][j], dp[nb][a[i] - j] + a[i] - j); if(a[i] + j <= x) dp[b][j] = max(dp[b][j], dp[nb][j + a[i]] + a[i]); } } int mx = max(0ll, dp[n & 1][0]); cout << mx + (x - 2 * mx) << endl; 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...