# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1229734 | papaulo | 지구 온난화 (NOI13_gw) | C++20 | 0 ms | 0 KiB |
#include <bits/stdc++.h>
using namespace std;
int gw(int N, int *H) {
map<int, vector<int>> mp;
vector<int> ativo(N+2, 0);
for(int i=0;i<N;i++) {
auto p = mp.find(H[i]);
if(p==mp.end()) mp.insert({H[i], vector<int>(1, i+1)});
else p->second.push_back(i+1);
}
int cur=0, ans=0;
for(auto p = mp.rbegin(); p!=mp.rend(); p++) {
auto &v = p->second;
for(auto i : v) {
if(!ativo[i-1]&&!ativo[i+1]) cur++;
else if(ativo[i-1]&&ativo[i+1]) cur--;
ans=max(ans, cur);
ativo[i]=1;
}
}
return ans;
}