Submission #704078

#TimeUsernameProblemLanguageResultExecution timeMemory
704078Potato3218Global Warming (NOI13_gw)C++17
0 / 40
98 ms65536 KiB
#include <bits/stdc++.h> using namespace std; #define beegspeed ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define int long long #define pvi pair<int,vector<int>> #define f first #define s second vector<int> H; unordered_map<int,vector<int>> um; bool submerged[1000007]; vector<pvi> mp; inline int readInt() { beegspeed int x; cin>>x; return x; } signed main(){ beegspeed um.reserve(6000000); um.max_load_factor(0.25); int n = readInt(); for(int i = 0; i < n; i++){ int h = readInt(); H.push_back(h); um[h].push_back(i); } for(auto& itr: um){ mp.push_back(itr); } sort(mp.begin(), mp.end(), greater<pvi>()); int ans = 0, curr = 0; for(auto itr: mp){ for(auto island:itr.second){ island[submerged] = true; //check if neighbouring sections are unsubmerged yet if(island == 0){ int m = 1; if(!m[submerged]){ ++curr; } } else if(island == n-1){ int m = n - 2; if(!m[submerged]) ++curr; } else{ int p = (!submerged[island + 1]) + (!submerged[island- 1]); //if both aren't submerged evaluates to 2, if one of them is submerged evaluates to 1, else it's just 0 --p; curr += p; } } ans = max(ans, curr); } cout<<ans; }
#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...