Language: C++

#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
/*------- Constants---- */

#define LL                      long long
#define Ulong                   unsigned long long
#define REP(i,n)                for(long long i=0; i < n ; i++ )
#define mp                      make_pair
#define pb                      push_back
#define all(x)                  (x).begin(),(x).end()
#define PI                      acos(-1.0)
#define EPS                     1e-14
#define F                       first
#define S                       second
#define di(x)                   int x; input(x)
#define in(x)                   input(x)
#define in2(x,y)                in(x),in(y)
#define in3(x,y,z)              in(x),in2(y,z)
#define lc                      ((n)<<1)
#define rc                      ((n)<<1|1)
#define db(x)                   cout << #x << " -> " << x << endl
#define nl                      cout<<endl
#define ms(ara_name,value)      memset(ara_name,value,sizeof(ara_name))
#define IO                      ios_base::sync_with_stdio(0);cin.tie(0)
#define READ                    freopen("/home/matrixcode/Desktop/in.txt","r",stdin)
#define WRITE                   freopen("out.txt","w",stdout)
template<class T> inline void input(T &x) {
	register char c = getchar();x = 0;
	int neg = 0;
	for(; ((c<48 || c>57) && c != '-'); c = getchar());
	if(c=='-'){neg = 1;c = getchar();}
	for(; c>47 && c<58 ; c = getchar()){x = (x<<1) + (x<<3) + c - 48;}
	if(neg) x = -x;
}
inline long long bigmod(long long p,long long e,long long M){
	long long ret = 1;
	for(; e > 0; e >>= 1){
		if(e & 1) ret = (ret * p) % M;
		p = (p * p) % M;
	} return ret;
}
template <class T> inline T gcd(T a,T b){if(b==0)return a;return gcd(b,a%b);}
template <class T> inline T modinverse(T a,T M){return bigmod(a,M-2,M);}

/***************************** END OF TEMPLATE *******************************/

const int N = 405;
LL a[N];
LL dp[N][N];
LL p[N];

LL solve(int i, int j) {
  if(dp[i][j] != -1) return dp[i][j];
  LL ret = LONG_LONG_MAX;
  if(i == j) return 0;
	for(int k = i; k < j; k ++) {
    LL v = solve(i,k) + solve(k+1,j) + p[j] - p[i-1];
    ret = min(ret, v);
  }
  return dp[i][j] = ret;
}

int main()
{     
	int n;
	in(n);
	for(int i = 1; i <= n; i ++) {
		in(a[i]);
	}
  for(int i = 1; i <= n; i ++) p[i] = p[i-1] + a[i];
  memset(dp,-1,sizeof dp);
	cout << solve(1,n);
}




Compiler output:
a.cc: In function 'void input(T&)':
a.cc:31:23: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
   31 |         register char c = getchar();x = 0;
      |                       ^
a.cc: In function 'long long int solve(int, int)':
a.cc:57:12: error: 'LONG_LONG_MAX' was not declared in this scope
   57 |   LL ret = LONG_LONG_MAX;
      |            ^~~~~~~~~~~~~
a.cc: In function 'int main()':
a.cc:74:3: error: 'memset' was not declared in this scope
   74 |   memset(dp,-1,sizeof dp);
      |   ^~~~~~
a.cc:5:1: note: 'memset' is defined in header '<cstring>'; this is probably fixable by adding '#include <cstring>'
    4 | #include <algorithm>
  +++ |+#include <cstring>
    5 | using namespace std;
a.cc: In instantiation of 'void input(T&) [with T = int]':
a.cc:69:2:   required from here
   19 | #define in(x)                   input(x)
      |                                 ~~~~~^~~
a.cc:31:23: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
   31 |         register char c = getchar();x = 0;
      |                       ^
a.cc: In instantiation of 'void input(T&) [with T = long long int]':
a.cc:71:3:   required from here
   19 | #define in(x)                   input(x)
      |                                 ~~~~~^~~
a.cc:31:23: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
   31 |         register char c = getchar();x = 0;
      |                       ^