Submission #1353786

#TimeUsernameProblemLanguageResultExecution timeMemory
1353786meme_boi2Global Warming (NOI13_gw)C++20
40 / 40
195 ms8880 KiB
#include <bits/stdc++.h>
using namespace std;
#define pii pair<int,int>
int32_t main(){
    cin.tie(nullptr)->sync_with_stdio(0);
    
    int n;
    cin >> n;
    vector<bool> dp(n+2,false);
    priority_queue<pii> pq;
    for(int i = 1; i <= n; i++){
        int x;
        cin >> x;
        pq.push({x,i});
    }
    int cur = 0, ans = 0;
    while(!pq.empty()){
        auto [x,i] = pq.top();
        pq.pop();
        if(x == 0) break;
        if(dp[i - 1] && dp[i + 1]){
            cur--;
            dp[i] = 1;
        }else if(dp[i-1] || dp[i +1]){
            dp[i] = 1;
        }else{
            dp[i] = 1;
            cur++;
        }
       // ans = max(ans,cur);
       // pii temp;
        while(!pq.empty() && pq.top().first == x){
            auto [k,idx] = pq.top();
            pq.pop();
            if(dp[idx - 1] && dp[idx + 1]){
            cur--;
            dp[idx] = 1;
             }else if(dp[idx-1] || dp[idx +1]){
                 dp[idx] = 1;
          }else{
            dp[idx] = 1;
            cur++;
        }
        }
      //  cout << cur << '\n';
        ans = max(ans,cur);
    }
    cout << ans;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...