제출 #218801

#제출 시각아이디문제언어결과실행 시간메모리
218801LawlietBigger segments (IZhO19_segments)C++14
37 / 100
112 ms38904 KiB
#include <bits/stdc++.h>

using namespace std;
typedef long long int lli;

const int MAXN = 5010;

int n;

int v[MAXN];
int curMx[MAXN];
int dp[MAXN][MAXN];

lli sv[MAXN];

int main()
{
	scanf("%d",&n);

	for(int i = 1 ; i <= n ; i++)
		scanf("%d",&v[i]);

	for(int i = 1 ; i <= n ; i++)
		sv[i] = sv[i - 1] + v[i];

	for(int i = 1 ; i <= n ; i++)
		dp[n + 1][i] = 1;

	for(int i = n ; i > 0 ; i--)
	{
		int p = i;

		for(int j = n ; j >= i ; j--)
		{
			curMx[j] = curMx[j + 1];
			curMx[j] = max( curMx[j] , dp[j + 1][i] );
		}

		for(int j = i - 1 ; j >= 0 ; j--)
		{
			lli lastSum = sv[i - 1] - sv[j - 1];

			while( p <= n && sv[p] - sv[i - 1] < lastSum )
				p++;

			dp[i][j] = curMx[p] + 1;
		}
	}

	int ans = 0;

	for(int i = 1 ; i <= n ; i++)
		ans = max( ans , dp[i + 1][1] );

	printf("%d\n",ans);
}

컴파일 시 표준 에러 (stderr) 메시지

segments.cpp: In function 'int main()':
segments.cpp:18:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d",&n);
  ~~~~~^~~~~~~~~
segments.cpp:21:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d",&v[i]);
   ~~~~~^~~~~~~~~~~~
#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...