Submission #1241660

#TimeUsernameProblemLanguageResultExecution timeMemory
1241660moondarksideRadio Towers (IOI22_towers)C++20
0 / 100
4045 ms2792 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; } } 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 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...