Submission #201297

#TimeUsernameProblemLanguageResultExecution timeMemory
201297guangxuanBigger segments (IZhO19_segments)C++14
37 / 100
1578 ms3064 KiB
#include <bits/stdc++.h>

using namespace std;

int a[500009];
long long rs[500009];
pair<int,long long> dp[500009];

int main(){
	int n;
	scanf("%d",&n);
	for(int i=0;i<n;i++){
		scanf("%d",&a[i]);
		rs[i+1]=rs[i]+a[i];
	}
	for(int i=1;i<=n;i++){
		dp[i] = make_pair(1,rs[i]);
		for(int j=1;j<i;j++){
			if(rs[i]-rs[j]>=dp[j].second){
				if(dp[i].first<dp[j].first+1){
					dp[i] = {dp[j].first+1,rs[i]-rs[j]};
				}
				else if (dp[i].first==dp[j].first+1){
					dp[i].second = min(dp[i].second,rs[i]-rs[j]);
				}
			}
		}
	}
	printf("%d", dp[n].first);
}

Compilation message (stderr)

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