結果

問題 No.2036 Max Middle
コンテスト
ユーザー みなぎ
提出日時 2026-05-11 00:49:24
言語 C++23
(gcc 15.2.0 + boost 1.89.0)
コンパイル:
g++-15 -O2 -lm -std=c++23 -Wuninitialized -DONLINE_JUDGE -o a.out _filename_
実行:
./a.out
結果
TLE  
実行時間 -
コード長 861 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 6,509 ms
コンパイル使用メモリ 378,120 KB
実行使用メモリ 16,200 KB
最終ジャッジ日時 2026-05-11 00:50:00
合計ジャッジ時間 8,868 ms
ジャッジサーバーID
(参考情報)
judge2_1 / judge1_1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 4 TLE * 1 -- * 12
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

#include <bits/stdc++.h>
#include <atcoder/all>
#define rep(i, a, b) for (int i = a; i < b; i++)
#define rrep(i, a, b) for (int i = b - 1; i >= a; i--)
#define ll long long
#define graph vector<vector<int>>
#define Graph vector<vector<pair<int,int>>>
using namespace std;
using namespace atcoder;

using mint = modint998244353;
int MOD=998244353;
vector<int> dy={0,1,0,-1},dx={1,0,-1,0};



int main(){
    int n; cin>>n;
    vector<int> a(n);
    rep(i,0,n) cin>>a[i];

    set<int> st;
    rep(i,0,n-2){
        if(a[i]<a[i+1]&&a[i+1]>a[i+2]) st.insert(i+1);
    }

    int ans=0;
    while(!st.empty()){
        int v=*st.begin();
        st.erase(v);
        ans++;
        a[v]=min(a[v-1],a[v+1])-1;
        if(v-1>0&&a[v-2]<a[v-1]&&a[v-1]>a[v]) st.insert(v-1);
        if(v+1<n-1&&a[v]<a[v+1]&&a[v+1]>a[v+2]) st.insert(v+1);
    }

    cout<<ans<<endl;
}
0