Submission #290793

#TimeUsernameProblemLanguageResultExecution timeMemory
290793PeppaPigBigger segments (IZhO19_segments)C++14
0 / 100
1 ms384 KiB
#include <bits/stdc++.h>

#define long long long
#define pii pair<long, long>
#define x first
#define y second

using namespace std;

const int N = 5e5 + 5;

int n, dp[N];
long A[N], pref[N];

int main() {
	scanf("%d", &n);
	for(int i = 1; i <= n; i++) {
		scanf("%lld", A + i);
		pref[i] = pref[i - 1] + A[i];
	}
	
	vector<pii> vec;
	int ans = 0;
	vec.emplace_back(0, 0);
	for(int i = 1; i <= n; i++) {
		int idx = -1;
		long val = -1;
		for(pii p : vec) if(p.x <= pref[i] && p.x > val)
			val = p.x, idx = p.y;
		dp[i] = dp[idx] + 1, vec.emplace_back(2ll * pref[i] - pref[idx], i);
		ans = max(ans, dp[i]);
	}
	printf("%d\n", ans);

	return 0;

}

Compilation message (stderr)

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