제출 #100160

#제출 시각아이디문제언어결과실행 시간메모리
100160pamajKas (COCI17_kas)C++14
70 / 100
902 ms525312 KiB
#include <bits/stdc++.h>
using namespace std;

const int maxn = 100, maxm = 1e3 + 10, inf = 1e6;

int dp[maxn][maxm][maxm], v[maxn], n, pref[maxn];

int solve(int i, int val1, int val2)
{

	if(dp[i][val1][val2] != -1) return dp[i][val1][val2];

	if(i == n)
	{
		if(val1 == val2)
		{
			return (pref[n - 1] - val1);
		}
		else 
			return inf;
	}

	int caso1 = solve(i + 1, val1, val2);
	int caso2 = solve(i + 1, val1 + v[i], val2);
	int caso3 = solve(i + 1, val1, val2 + v[i]);

	return dp[i][val1][val2] = min({caso1, caso2, caso3});
}

int main()
{
	ios::sync_with_stdio(false), cin.tie(nullptr);

	cin >> n;

	for(int i = 0; i < n; i++)
	{
		cin >> v[i];
		pref[i] = v[i];
		if(i) pref[i] += pref[i - 1];
	}

	memset(dp, -1, sizeof(dp));

	cout << solve(0, 0, 0) << "\n"; 

}
#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...