aboutsummaryrefslogtreecommitdiff
path: root/01_introductory_problems/apple_division_1623.cpp
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--01_introductory_problems/apple_division_1623.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/01_introductory_problems/apple_division_1623.cpp b/01_introductory_problems/apple_division_1623.cpp
new file mode 100644
index 0000000..fb367b4
--- /dev/null
+++ b/01_introductory_problems/apple_division_1623.cpp
@@ -0,0 +1,21 @@
1#include <iostream>
2#include <numeric>
3#include <vector>
4
5long long md(std::vector<long long>& a, long long p, long long t, size_t i) {
6 if (2*p >= t)
7 return 2*p - t;
8 if (i == a.size())
9 return t;
10 return std::min(md(a, p, t, i+1), md(a, p+a[i], t, i+1));
11}
12
13int main() {
14 size_t n;
15 std::cin >> n;
16 std::vector<long long> a(n);
17 for (size_t i = 0; i < n; i++)
18 std::cin >> a[i];
19 auto s = md(a, 0, std::accumulate(a.begin(), a.end(), (long long)0), 0);
20 std::cout << s << "\n";
21}

Generated with cgit - Back to sebastiano.tronto.net