This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
#define ll long long
int const N=305;
ll dp[N][N],inc[N][N];
ll sm[N][N];
long long max_weights(int n, int m, vector<int> X, vector<int> Y,
                      vector<int> W)
{
	for(int i=0;i<m;i++)
		sm[X[i]+1][Y[i]+1]+=W[i];
	for (int i = 1; i <=n; ++i)
		for(int j=1;j<=n;++j)
			sm[i][j]+=sm[i][j-1];
	for(int i=2;i<=n;i++)
		for(int k=0;k<=n;k++){
			//cal inc
			for(int p=0;p<=k;p++)
				inc[i][k]=max(inc[i][k],max(inc[i-1][p]+sm[i-1][k]-sm[i-1][p],dp[i-1][p]));
			dp[i][k]=inc[i][k];
			for(int p=k+1;p<=n;p++)
				dp[i][k]=max(dp[i][k],dp[i-1][p]+sm[i][p]-sm[i][k]);
			// cout<<dp[i][k]<<' ';
			// if(k==n)
			// 	cout<<endl;
		}
	ll ans=0;
	for(int i=0;i<=n;i++)
		ans=max(ans,dp[n][i]);
	return ans;
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |