Submission #1305617

#TimeUsernameProblemLanguageResultExecution timeMemory
1305617Taxiradio송신탑 (IOI22_towers)C++20
0 / 100
292 ms2208 KiB
#include "towers.h" #include<bits/stdc++.h> using namespace std; //#define int int64_t int M = 1000000002; vector<int> u; int n; void init(int N, std::vector<int> H) { n = N; vector<int> w(N , M); stack<array<int , 2>> a; a.push({0 , M}); for(int i = 0; i < N; i++){ int o = 0; while(a.top()[0]>H[i]){ o = max(o , a.top()[1]); a.pop(); } a.top()[1] = max(a.top()[1] , o); w[i] = min(w[i] , a.top()[1]-H[i]+1); a.push({H[i] , H[i]}); } while(!a.empty())a.pop(); a.push({0 , M}); for(int i = N-1; i >= 0; i--){ int o = 0; while(a.top()[0]>H[i]){ o = max(o , a.top()[1]); a.pop(); } a.top()[1] = max(a.top()[1] , o); w[i] = min(w[i] , a.top()[1]-H[i]+1); a.push({H[i] , H[i]}); } for(int i = 0; i < N; i++){ u.push_back(w[i]); } sort(u.begin() , u.end()); } int max_towers(int L, int R, int D) { return n-(upper_bound(u.begin() , u.end() , D)-u.begin()); }
#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...