제출 #341466

#제출 시각아이디문제언어결과실행 시간메모리
341466ogibogi2004Bigger segments (IZhO19_segments)C++14
0 / 100
1 ms384 KiB
#include<bits/stdc++.h> using namespace std; #define ll long long const ll INF=2e17; const int MAXN=5e5+6; ll a[MAXN],n; ll pref[MAXN]; int main() { cin>>n; for(int i=1;i<=n;i++)cin>>a[i]; for(int i=1;i<=n;i++) { pref[i]=pref[i-1]+a[i]; } ll r=n,last=INF,cnt=0; while(r!=0) { //cout<<r<<endl; cnt++; int j=1; for(int i=r;i>=1;i--) { if(pref[r]-pref[i-1]>last)break; ll low=1,high=i-1,mid,ans=-1; while(low<=high) { mid=(low+high)/2; if(pref[i-1]-pref[mid-1]>pref[r]-pref[i-1]) { low=mid+1; continue; } if(pref[i-1]-pref[mid-1]>=pref[mid-1]) { ans=mid; low=mid+1; } else high=mid-1; } //cout<<i<<" "<<ans<<endl; if(ans==-1)continue; j=i; break; } last=pref[r]-pref[j-1]; r=j-1; } cout<<max(1ll,cnt)<<endl; return 0; }
#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...