Submission #1165748

#TimeUsernameProblemLanguageResultExecution timeMemory
116574812345678Global Warming (NOI13_gw)C++20
0 / 40
174 ms20072 KiB
#include <bits/stdc++.h> using namespace std; const int nx=1e6+5; int n, h[nx], cnt, mx, water[nx], dsu[nx]; 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++; //cout<<"debug "<<idx<<' '<<cnt<<'\n'; mx=max(mx, cnt+1); } 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...