Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define int long long
- using namespace std;
- const int N=1000000+10;
- int n,arr[N],ans,l=N,r=-1,mx=-2147483648,lmx[N],rmx[N];
- signed main() {
- cin>>n;
- for (int i=0; i<n; i++) {
- cin>>arr[i];
- if (arr[i]>0) {
- ans+=arr[i];
- l=min(l, i);
- r=max(r, i);
- }
- }
- if (!ans) {
- lmx[0]=arr[0];
- for (int i=1; i<n; i++) {
- lmx[i]=max(lmx[i-1], arr[i]);
- }
- rmx[n-1]=arr[n-1];
- for (int i=n-2; i>=0; i--) {
- rmx[i]=max(rmx[i+1], arr[i]);
- }
- for (int i=1; i<n-1; i++) {
- mx=max(lmx[i-1]+rmx[i+1], mx);
- }
- cout<<mx;
- return 0;
- }
- for (int i=l; i<=r; i++) {
- if(arr[i]<=0){
- cout<<ans;
- return 0;
- }
- }
- if(l)
- mx=max(arr[l-1]-arr[l],mx);
- if(r+1<n)
- mx=max(mx,arr[r+1]-arr[r]);
- for (int i=0; i<l-1; i++) {
- mx=max(mx, arr[i]);
- }
- for (int i=r+2; i<n; i++) {
- mx=max(mx, arr[i]);
- }
- for (int i=l+1; i<r; i++) {
- mx=max(mx, 0-arr[i]);
- }
- cout<<ans+mx;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement