제출 #1160238

#제출 시각아이디문제언어결과실행 시간메모리
1160238ImperialALENBigger segments (IZhO19_segments)C++20
13 / 100
1209 ms476 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];
		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;
	}
}
#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...