#include<bits/stdc++.h>
using namespace std;
vector<int> Heights;
vector<int> Join;
vector<int> Carry;
void init(int N, vector<int> H) {
Heights=H;
}
int max_towers(int L, int R, int D){
if(Join.size()==0){
int am=0;
int minMax=Heights[L];
bool cases=false;
Join.push_back(0);
vector<int> NoSync;
Carry=vector<int>(Heights.size(),-1);
Carry[0]=0;
for(int i=1;i<=Heights.size();i++){
NoSync.push_back(i);
if(cases){
if(Heights[i]+D<=minMax){
bool synced=false;
for(int j=NoSync.size()-1;j>-1;j--){
if(Heights[NoSync[j]]+D<=minMax){
synced=true;
}
Carry[NoSync[j]]=i;
if(synced){
Carry[i]=i-1;
}
}
cases=false;
am++;
minMax=Heights[i];
}
else{
minMax=max(minMax,Heights[i]);
}
}
else{
if(Heights[i]-D>=minMax){
cases=true;
minMax=Heights[i];
}
else{
minMax=min(minMax,Heights[i]);
}
}
Join.push_back(am);
}
}
if(Carry[L]==-1){
return 1;
}
return Join[R]-Join[Carry[L]];
}
# | 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... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |