제출 #1165750

#제출 시각아이디문제언어결과실행 시간메모리
116575012345678Global Warming (NOI13_gw)C++20
23 / 40
220 ms20072 KiB
#include <bits/stdc++.h> using namespace std; const int nx=1e6+5; int n, h[nx], cnt, mx, water[nx], dsu[nx], l, r; vector<pair<int, int>> v; int find(int x) { if (dsu[x]==x) return x; return dsu[x]=find(dsu[x]); } int main() { cin.tie(NULL)->sync_with_stdio(false); cin>>n; for (int i=1; i<=n; i++) cin>>h[i], v.push_back({h[i], i}), dsu[i]=i; h[0]=h[n+1]=INT_MAX; sort(v.begin(), v.end()); for (auto [_, idx]:v) { if (water[find(idx-1)]&&water[find(idx+1)]) dsu[find(idx)]=find(idx-1), dsu[find(idx-1)]=find(idx+1), water[idx]=1, cnt--; else if (water[find(idx-1)]) water[idx]=1, dsu[find(idx)]=find(idx-1); else if (water[find(idx+1)]) water[idx]=1, dsu[find(idx)]=find(idx+1); else water[idx]=1, cnt++; if (water[find(1)]) l=1; if (water[find(n)]) r=1; mx=max(mx, cnt+1-r-l); } cout<<mx; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...