Submission #672058

#TimeUsernameProblemLanguageResultExecution timeMemory
672058Username4132Cigle (COI21_cigle)C++14
100 / 100
486 ms134388 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...