이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |