Language: C++

#include <bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i=0;i<(n);i++)
#define rep1(i,n) for(int i=1;i<=(n);i++)
#define all(x) (x).begin(),(x).end()
#define V vector
typedef V<int> vi;
typedef V<vi> vvi;
typedef long long ll;
typedef pair<int, int> P;
typedef tuple<int, int, int> T;
constexpr auto INF = INT_MAX >> 1;
constexpr auto LINF = 5000000000000000;
constexpr auto MOD = 1000000007;

int main() {

	int n;
	cin >> n;
	V<ll> leaf(n + 1), notleaf(n + 1);
	bool ok = true;
	rep(i, n + 1) {
		int a;
		cin >> a;
		leaf[i] = a;
		if (i == 0)notleaf[i] = 1;
		else {
			notleaf[i] = notleaf[i - 1] * 2 - a;
			notleaf[i] = min(notleaf[i], LINF);
		}
		if (i == 0 && a > 0)ok = false;
		if (i < n && notleaf[i] <= 0)ok = false;
		if (i == n && notleaf[i] < 0)ok = false;
	}
	if (!ok) {
		cout << -1 << endl;
		return 0;
	}

	V<ll> v(n + 1);

	rep(i, n + 1) {
		if (i == 0)v[n - i] = leaf[n - i];
		else v[n - i] = v[n - i + 1] + leaf[n - i];
		v[n - i] = min(v[n - i], notleaf[n - i] + leaf[n - i]);
	}
	
	ll sum = 0;
	for (int x : v)sum += x;
	cout << sum << endl;

}

Compiler output:
a.cc: In function 'int main()':
a.cc:29:41: error: no matching function for call to 'min(__gnu_cxx::__alloc_traits<std::allocator<long long int>, long long int>::value_type&, const long int&)'
   29 |                         notleaf[i] = min(notleaf[i], LINF);
      |                                      ~~~^~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/14/algorithm:60,
                 from /usr/include/x86_64-linux-gnu/c++/14/bits/stdc++.h:51,
                 from a.cc:1:
/usr/include/c++/14/bits/stl_algobase.h:233:5: note: candidate: 'template<class _Tp> constexpr const _Tp& std::min(const _Tp&, const _Tp&)'
  233 |     min(const _Tp& __a, const _Tp& __b)
      |     ^~~
/usr/include/c++/14/bits/stl_algobase.h:233:5: note:   template argument deduction/substitution failed:
a.cc:29:41: note:   deduced conflicting types for parameter 'const _Tp' ('long long int' and 'long int')
   29 |                         notleaf[i] = min(notleaf[i], LINF);
      |                                      ~~~^~~~~~~~~~~~~~~~~~
/usr/include/c++/14/bits/stl_algobase.h:281:5: note: candidate: 'template<class _Tp, class _Compare> constexpr const _Tp& std::min(const _Tp&, const _Tp&, _Compare)'
  281 |     min(const _Tp& __a, const _Tp& __b, _Compare __comp)
      |     ^~~
/usr/include/c++/14/bits/stl_algobase.h:281:5: note:   candidate expects 3 arguments, 2 provided
In file included from /usr/include/c++/14/algorithm:61:
/usr/include/c++/14/bits/stl_algo.h:5686:5: note: candidate: 'template<class _Tp> constexpr _Tp std::min(initializer_list<_Tp>)'
 5686 |     min(initializer_list<_Tp> __l)
      |     ^~~
/usr/include/c++/14/bits/stl_algo.h:5686:5: note:   candidate expects 1 argument, 2 provided
/usr/include/c++/14/bits/stl_algo.h:5696:5: note: candidate: 'template<class _Tp, class _Compare> constexpr _Tp std::min(initializer_list<_Tp>, _Compare)'
 5696 |     min(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
/usr/include/c++/14/bits/stl_algo.h:5696:5: note:   template argument deduction/substitution failed:
a.cc:29:41: note:   mismatched types 'std::initializer_list<_Tp>' and 'long long int'
   29 |                         notleaf[i] = min(notleaf[i], LINF);
      |                                      ~~~^~~~~~~~~~~~~~~~~~