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<iostream>
#include "stdio.h"
#include<algorithm>
using namespace std;
#define forn(i, n) for(int i=0; i<(int)n; ++i)
#define forsn(i, s, n) for(int i=s; i<(int)n; ++i)
#define dforn(i, n) for(int i=n-1; i>=0; --i)
#define dforsn(i, s, n) for(int i=n-1; i>=(int)s; --i)
const int MAXN = 5010;
int n, mx, tmp, sum[MAXN], value[MAXN][MAXN], dp[MAXN][MAXN];
int main(){
cin >> n;
forn(i, n) scanf("%d", &tmp), sum[i+1] = sum[i] + tmp;
dforn(i, n) dforsn(j, i+2, n){
int pos = lower_bound(sum, sum+n, 2*sum[j]-sum[i+1]) - sum;
value[i][j] = value[i+1][j]+(pos<n && sum[pos]==2*sum[j]-sum[i+1]);
dp[i][j] = max(dp[i+1][j], dp[i][j+1]);
if(pos<n) dp[i][j] = max(dp[i][j], value[i][j] + dp[j][pos+1]);
}
forn(i, n) mx = max(mx, dp[0][i]);
printf("%d\n", mx);
}
Compilation message (stderr)
cigle.cpp: In function 'int main()':
cigle.cpp:15:21: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
15 | forn(i, n) scanf("%d", &tmp), sum[i+1] = sum[i] + tmp;
| ~~~~~^~~~~~~~~~~~
# | 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... |