158752025-03-07 11:49:10UVincePicnic's Tablecpp17Hibás válasz 0/1001.991s262144 KiB
#include <bits/stdc++.h>
using namespace std;
using ll=long long;

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    ll n;
    cin>>n;
    vector<ll> h(n+2);
    vector<ll> l(n+1),r(n+1);
    h[0]=LLONG_MAX;
    h[n+1]=LLONG_MAX;
    for (ll i=1;i<=n;i++) cin>>h[i];
    stack<ll> mx;
    mx.push(0);
    for (ll i=1;i<=n;i++){
        while (!mx.empty() && h[mx.top()]<=h[i]) mx.pop();
        l[i]=mx.top();
        mx.push(i);
    }
    stack<ll> mx2;
    mx2.push(n+1);
    for (ll i=n;i>=1;i--){
        while (!mx2.empty() && h[mx2.top()]<=h[i]) mx2.pop();
        r[i]=mx2.top();
        mx2.push(i);
    }

    ll ans=0;
    stack<ll> st;
    st.push(0);
    for (ll i=1;i<=n;i++){
        ll last=-1;
        while (!st.empty() && h[st.top()]<=h[i]) {last=st.top();st.pop();}
        st.push(i);
        if (last==-1 || h[last]!=h[i]) continue;
        ll left=l[last]+1;
        ll right=r[i]-1;

        ll cur=i-last+1;
        if (last-left<right-i){
            cur+=2*(last-left);
            ll mid = (last+i)/2;
            ll push = (i-mid)*2-1;
            if (mid*2!=last+i) push++;
            cur+=min(right-i, push);
        }
        else {
            cur+=2*(right-i);
            ll mid = (last+i)/2;
            ll push = (mid-last)*2-1;
            if (mid*2!=last+i) push++;
            cur+=min(last-left, push);
        }
        ans=max(ans, cur);
    }
    cout<<ans;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva1ms316 KiB
2Elfogadva1ms316 KiB
subtask20/10
3Elfogadva1ms316 KiB
4Elfogadva1ms316 KiB
5Hibás válasz109ms23668 KiB
6Elfogadva108ms23872 KiB
7Elfogadva108ms23816 KiB
subtask30/15
8Elfogadva1ms316 KiB
9Elfogadva1ms508 KiB
10Elfogadva1ms316 KiB
11Hibás válasz1ms316 KiB
12Elfogadva1ms316 KiB
13Hibás válasz1ms508 KiB
14Elfogadva1ms316 KiB
subtask40/15
15Hibás válasz2ms316 KiB
16Hibás válasz1ms316 KiB
17Elfogadva1ms316 KiB
18Elfogadva2ms316 KiB
19Elfogadva2ms316 KiB
20Elfogadva1ms316 KiB
21Elfogadva2ms316 KiB
subtask50/25
22Hibás válasz20ms2612 KiB
23Hibás válasz19ms2788 KiB
24Elfogadva19ms2788 KiB
25Elfogadva1ms316 KiB
26Hibás válasz19ms2612 KiB
27Hibás válasz1ms316 KiB
28Elfogadva1ms316 KiB
29Elfogadva18ms2612 KiB
30Hibás válasz14ms2792 KiB
subtask60/35
31Elfogadva1.792s262144 KiB
32Elfogadva1.98s262144 KiB
33Hibás válasz1.912s262144 KiB
34Elfogadva1.991s262144 KiB
35Elfogadva1ms508 KiB
36Elfogadva1.601s262028 KiB
37Hibás válasz1.508s254772 KiB
38Hibás válasz1ms316 KiB
39Elfogadva1ms500 KiB
40Hibás válasz1.376s248116 KiB