Submission #1160243

#TimeUsernameProblemLanguageResultExecution timeMemory
1160243ImperialALENBigger segments (IZhO19_segments)C++20
13 / 100
231 ms456 KiB
// #pragma GCC optomize ("Ofast") // #pragma GCC optomize ("unroll-loops") // #pragma GCC target ("avx,avx2,fma") #include <bits/stdc++.h> #define F first #define S second #define ll long long //#define int long long #define pb push_back #define all(x) (x.begin(),x.end()) #define ios ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); using namespace std; const ll N = 5e5+9, INF = 1e18 , inf = 1e9+9, mod = 1e9+9; int a[N]; int suf[N]; int pref[N]; signed main(){ ios; int tt=1; // cin>>tt; while(tt--){ int n; cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; pref[i]=pref[i-1]+a[i]; } for(int i=n;i>=1;i--)suf[i]=suf[i+1]+a[i]; if(n<=20){ int ans=1; for(int mask=0;mask<(1<<n);mask++){ vector<int>pos; pos.pb(0ll); for(int i=0;i<n;i++){ if((1<<i)&mask)pos.pb(i+1); else if(i+1==n)pos.pb(n); } vector<int>res; for(int i=1;i<pos.size();i++){ int l=pos[i-1]; int r=pos[i]; res.pb(pref[r]-pref[l]); } if(is_sorted(res.begin(),res.end())){ int sz=res.size(); // cout<<sz<<'\n'; // for(auto to:pos)cout<<to<<" "; // cout<<"-----\n"; ans=max(ans,sz); } } cout<<ans; }else{ int ans=1; for(int j=1;j<=n;j++){ int x=pref[j]; int seg=1; int sum=0; for(int i=j+1;i<=n;i++){ sum+=a[i]; if(sum>=x && sum<=suf[i+1]){ x=sum; sum=0; seg++; } } if(sum>=x){ seg++; ans=max(ans,seg); } } cout<<ans; } } }
#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...