COFO::1272D Remove One Element

Problem

Point

Design

Complexity

Code

#include<bits/stdc++.h>
#define sz(v) (int) v.size()
#define all(v) v.begin(), v.end()
#define rep(i, a, b) for(int i=(a); i <(b); i++)
#define r_rep(i, a, b) for(int i=(a); i >(b); i--)
using namespace std;
typedef long long ll;

int n;
ll a[2 * 100001];
ll l[2 * 100001], r[2 * 100001]; // l[i] : ending in i. r[i] : starting from i.
void solve(){
    cin >> n;
    rep(i, 0, n){
        cin >> a[i];
        l[i] = r[i] = 1;
    }
    
    ll ans = 1;
    rep(i, 1, n) if(a[i-1] < a[i]){
        l[i] = l[i-1] + 1;
        ans = max(ans, l[i]);
    }
    r_rep(i, n-2, -1) if(a[i] < a[i+1]){
        r[i] = r[i+1] + 1;
        ans = max(ans, r[i]);
    }
    
    rep(i, 1, n-1) if(a[i-1] < a[i+1])
        ans = max(ans, l[i-1] + r[i+1]);
    
    cout << ans << '\n';
}

int main(){
        solve();
    return 0;
}