Submission #1310395

#TimeUsernameProblemLanguageResultExecution timeMemory
1310395norrawichzzzKas (COCI17_kas)C++20
100 / 100
195 ms197644 KiB
#include <bits/stdc++.h>
using namespace std;

int main() {
	cin.tie(0)->sync_with_stdio(0);
	int n;
	cin>> n;
	
	int sm=0;
	vector<int> a(n+1);
	for (int i=1; i<=n; i++) {
		cin>> a[i];
		sm+=a[i];
	}
	
	vector<vector<int>> dp(n+1, vector<int>(sm+1, -1));
	dp[0][0] = 0;
	
	for (int i=1; i<=n; i++) {
		int x = a[i];
		for (int j=0; j<=sm-x; j++) {
			dp[i][j] = dp[i-1][j];
			if (dp[i-1][abs(j-x)] != -1) dp[i][j] = max(dp[i-1][abs(j-x)]+x, dp[i][j]);
			if (dp[i-1][abs(j+x)] != -1) dp[i][j] = max(dp[i-1][abs(j+x)]+x, dp[i][j]);
		}
	}
	int ans = dp[n][0]/2 + (sm-dp[n][0]);
	cout<< ans;
	
}
#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...