Submission #1341817

#TimeUsernameProblemLanguageResultExecution timeMemory
1341817kinnykikiKas (COCI17_kas)C++20
100 / 100
64 ms1216 KiB
#include<bits/stdc++.h>
#define TC while(t--)
#define DEBUG(x) cout<<"Debug "<<#x<<':'<<x<<endl;
#define EL "\n"
#define ll long long
#define pii pair<int,int>
#define sz(x) (int)x.size()
#define st first
#define nd second
#define pb push_back
using namespace std;
const int MAX_SUM=1e5+5;
void fast(){
	ios_base::sync_with_stdio(0);
	cin.tie(0);
}
void solve(){
	int n;
	cin>>n;
	vector<int> c(n);
	int total_sum=0;
	for(int i=0;i<n;i++){
		cin>>c[i];
		total_sum+=c[i];
	}
	//dp[d]
	vector<int> dp(MAX_SUM,-1);
	dp[0]=0;
	for(int i=0;i<n;i++){
		int coin=c[i];
		vector<int> next_dp=dp;
		for(int d=0;d<MAX_SUM;d++){
			if(dp[d]!=-1){
				if(d+coin<MAX_SUM){
					next_dp[d+coin]=max(next_dp[d+coin],dp[d]+coin);
				}
				int new_diff=abs(d-coin);
				int new_heavy=dp[d]+max(0,coin-d);
				next_dp[new_diff]=max(next_dp[new_diff],new_heavy);
			}
		}
		dp=next_dp;
	}
	cout<<total_sum-dp[0];
}
int main(){
	fast();
	solve();
	/*int t;
	cin>>t;
	TC{
		solve();
	}*/
	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...