apple_division_1623.cpp (486B)
1 #include <iostream> 2 #include <numeric> 3 #include <vector> 4 5 long 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 13 int 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 }