Submission #1241664

#TimeUsernameProblemLanguageResultExecution timeMemory
1241664moondarksideRadio Towers (IOI22_towers)C++20
0 / 100
199 ms2452 KiB
#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;
                    }
                }
                NoSync.clear();
                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]]+1;
}
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...