158742025-03-07 11:47:43UVincePicnic's Tablecpp17Hibás válasz 0/1002.608s211764 KiB
#include <bits/stdc++.h>
using namespace std;
using ll=long long;

int main(){
    ll n;
    cin>>n;
    vector<ll> h(n+2);
    vector<int> l(n+1),r(n+1);
    h[0]=LLONG_MAX;
    h[n+1]=LLONG_MAX;
    for (int i=1;i<=n;i++) cin>>h[i];
    stack<int> mx;
    mx.push(0);
    for (int i=1;i<=n;i++){
        while (!mx.empty() && h[mx.top()]<=h[i]) mx.pop();
        l[i]=mx.top();
        mx.push(i);
    }
    stack<int> mx2;
    mx2.push(n+1);
    for (int 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<int> st;
    st.push(0);
    for (int i=1;i<=n;i++){
        int 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;
        int left=l[last]+1;
        int right=r[i]-1;

        ll cur=i-last+1;
        if (last-left<right-i){
            cur+=2*(last-left);
            int mid = (last+i)/2;
            int push = (i-mid)*2-1;
            if (mid*2!=last+i) push++;
            cur+=min(right-i, push);
        }
        else {
            cur+=2*(right-i);
            int mid = (last+i)/2;
            int 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
1Elfogadva1ms508 KiB
2Elfogadva1ms316 KiB
subtask20/10
3Elfogadva1ms316 KiB
4Elfogadva1ms316 KiB
5Hibás válasz206ms17964 KiB
6Elfogadva209ms17848 KiB
7Elfogadva211ms17972 KiB
subtask30/15
8Elfogadva1ms316 KiB
9Elfogadva1ms316 KiB
10Elfogadva1ms316 KiB
11Hibás válasz1ms508 KiB
12Elfogadva1ms316 KiB
13Hibás válasz1ms316 KiB
14Elfogadva1ms316 KiB
subtask40/15
15Hibás válasz4ms416 KiB
16Hibás válasz1ms316 KiB
17Elfogadva1ms316 KiB
18Elfogadva4ms316 KiB
19Elfogadva3ms520 KiB
20Elfogadva1ms316 KiB
21Elfogadva3ms316 KiB
subtask50/25
22Hibás válasz52ms2864 KiB
23Hibás válasz50ms2732 KiB
24Elfogadva52ms2864 KiB
25Elfogadva1ms316 KiB
26Hibás válasz50ms2868 KiB
27Hibás válasz1ms512 KiB
28Elfogadva1ms508 KiB
29Elfogadva50ms2732 KiB
30Hibás válasz32ms2544 KiB
subtask60/35
31Időlimit túllépés2.599s209584 KiB
32Időlimit túllépés2.601s210864 KiB
33Időlimit túllépés2.601s211764 KiB
34Időlimit túllépés2.601s210740 KiB
35Elfogadva1ms316 KiB
36Időlimit túllépés2.592s208188 KiB
37Időlimit túllépés2.594s205876 KiB
38Hibás válasz1ms316 KiB
39Elfogadva1ms316 KiB
40Időlimit túllépés2.608s202480 KiB