Submission #1273892

#TimeUsernameProblemLanguageResultExecution timeMemory
1273892flaming_top1Kas (COCI17_kas)C++20
100 / 100
147 ms198092 KiB
#include <bits/stdc++.h> #define SPED \ ios_base::sync_with_stdio(false); \ cin.tie(0); \ cout.tie(0); #define endl "\n" #define fi first #define se second #define lint long long #define fami signed #define lore main #define freefire freopen const int INF = 0x1f1f1f1f; const int NEG = 0xE1E1E1E1; using namespace std; int n; int a[505]; int dp[505][100005], sum; fami lore() { SPED; cin >> n; for (int i = 1; i <= n; i++) { cin >> a[i]; sum += a[i]; } memset(dp, 0xe1, sizeof dp); dp[0][0] = 0; for (int i = 0; i < n; i++) { for (int rem = 0; rem <= min(100000, sum); rem++) { if (dp[i][rem] == NEG) continue; // NO CHOOSE dp[i + 1][rem] = max(dp[i + 1][rem], dp[i][rem]); if (rem >= a[i + 1]) dp[i + 1][rem - a[i + 1]] = max(dp[i + 1][rem - a[i + 1]], dp[i][rem] + a[i + 1]); else { int z1 = dp[i][rem]; int z2 = dp[i][rem] + rem; if (z1 + a[i + 1] - z2 <= 100000) dp[i + 1][z1 + a[i + 1] - z2] = max(dp[i + 1][z1 + a[i + 1] - z2], z2); } if (rem + a[i + 1] <= 100000) dp[i + 1][rem + a[i + 1]] = max(dp[i + 1][rem + a[i + 1]], dp[i][rem]); } } cout << dp[n][0] + (sum - dp[n][0] * 2); } // Let your soul wander where dreams are born.
#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...