Submission #148285

#TimeUsernameProblemLanguageResultExecution timeMemory
148285GioChkhaidzeBigger segments (IZhO19_segments)C++14
100 / 100
404 ms20984 KiB
#include <bits/stdc++.h> #define F first #define S second using namespace std; long long n,a[500005],S[500005]; pair < long long , int > dp[500005]; main () { cin>>n; for (int i=1; i<=n; i++) { cin>>a[i]; S[i]=S[i-1]+a[i]; dp[i].F=1e18; } dp[0].S=1; for (int i=1; i<=n; i++) { if (dp[i].F>=dp[i-1].F+a[i]) dp[i].F=dp[i-1].F+a[i],dp[i].S=dp[i-1].S; int l=i+1,r=n,mid,idx=-1; while (l<=r) { mid=(l+r)/2; if (S[mid]-S[i]>=dp[i].F) { idx=mid; r=mid-1; } else l=mid+1; } if (idx==-1) continue; if (dp[idx].F>=S[idx]-S[i]) dp[idx].F=S[idx]-S[i],dp[idx].S=dp[i].S+1; } cout<<dp[n].S<<endl; }

Compilation message (stderr)

segments.cpp:7:7: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
 main () {
       ^
#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...