Submission #247703

#TimeUsernameProblemLanguageResultExecution timeMemory
247703MohamedAhmed04Hacker (BOI15_hac)C++14
100 / 100
405 ms18424 KiB
#include <bits/stdc++.h>

using namespace std ;

const int MAX = 5e5 + 10 ;

int arr[MAX] , pref[MAX] ;
int n ;
int sz ;

int sum(int idx)
{
	int a = min(n-1 , idx+sz-1) ;
	int x = pref[a] ;
	if(idx > 0)
		x -= pref[idx-1] ;
	if(idx + sz-1 >= n)
		x += pref[idx + sz-1 - n] ;
	return x ;
}

int main()
{
	ios_base::sync_with_stdio(0) ;
	cin.tie(0) ;
	cin>>n ;
	for(int i = 0 ; i < n ; ++i)
		cin>>arr[i] ;
	pref[0] = arr[0] ;
	for(int i = 1 ; i < n ; ++i)
		pref[i] = pref[i-1] + arr[i] ;
	multiset<int>s ;
	sz = (n+1) / 2 ;
	int ans = 0 ;
	for(int i = 0 ; i < n ; ++i)
	{
		if(i+sz-1 >= n)
			s.insert(sum(i)) ;
	}
	for(int i = 0 ; i < n ; ++i)
	{
		s.insert(sum(i)) ;
		ans = max(ans , *s.begin()) ;
		s.erase(s.find(sum((i-sz+1 + n) % n))) ;
	}
	return cout<<ans<<"\n" , 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...