Submission #1310026

#TimeUsernameProblemLanguageResultExecution timeMemory
1310026hyyhKas (COCI17_kas)C++20
100 / 100
62 ms1984 KiB
#include <iostream> #include <math.h> #include <vector> #include <string> #include <algorithm> #include <queue> #include <stack> #include <map> #include <cstring> #include <iomanip> #include <set> #include <bitset> using namespace std; using ll = long long; using pii = pair<int,int>; using piii = tuple<int,int,int>; #define endl '\n' #define f first #define s second int dp[2][200010]; int main(){ memset(dp,-1,sizeof dp); int n;cin >> n; int sums = 0; vector<int> a; for(int i = 0;i < n;i++){ int g;cin >> g; sums += g; a.emplace_back(g); } // for(auto k:a) cout << k << " "; // cout << endl; int sum = a[0]; dp[0][0] = 0; dp[0][a[0]] = a[0]; for(int i = 1;i < n;i++){ sum += a[i]; for(int j = 0;j <= sum;j++){ if(dp[abs((i-1)%2)][abs(j-a[i])] != -1) dp[i%2][j] = max(dp[abs((i-1)%2)][abs(j-a[i])]+a[i],dp[i%2][j]); if(dp[abs((i-1)%2)][j] != -1) dp[i%2][j] = max(dp[i%2][j],dp[abs((i-1)%2)][j]); if(dp[abs((i-1)%2)][j+a[i]] != -1) dp[i%2][j] = max(dp[i%2][j],dp[abs((i-1)%2)][j+a[i]]+a[i]); //cout << dp[i%2][j] << " "; } //cout << endl; } cout << sums-(dp[(n-1)%2][0]/2); }
#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...