Submission #839225

#TimeUsernameProblemLanguageResultExecution timeMemory
839225teo_thrashKas (COCI17_kas)C++14
0 / 100
131 ms1996 KiB
#include<bits/stdc++.h> #define pb push_back using namespace std; typedef long long ll; typedef pair<int, int> pii; const int maxn=1e5+10; const int mod=1e9+7; int n; ll a[503]; ll dp[maxn], sum=0; ///dp[i] is the max sum of the subsequences that when split optimally, the 2 parts differ by i ll curr[maxn]; int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin>>n; for(int i=0; i<n; i++){ cin>>a[i]; sum+=a[i]; } for(int i=0; i<=sum; i++){ dp[i]=-INT_MAX; } dp[0]=0; for(int i=1; i<n; i++){ for(int j=0; j<=sum; j++){ curr[j]=dp[j]; } for(int j=a[i]; j<=sum; j++){ curr[j]=max(curr[j], dp[j-a[i]]+a[i]); } for(int j=0; j<=sum-a[i]; j++){ curr[j]=max(curr[j], dp[j+a[i]]+a[i]); } for(int j=1; j<a[i]; j++){ curr[a[i]-j]=max(curr[a[i]-j], dp[j]-j+a[i]); } for(int j=0; j<=sum; j++){ dp[j]=max(curr[j], dp[j]); } } cout<<sum - dp[0]/2<<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...