Submission #1320055

#TimeUsernameProblemLanguageResultExecution timeMemory
1320055BigBadBully송신탑 (IOI22_towers)C++20
14 / 100
276 ms2324 KiB
#include "towers.h" #include <bits/stdc++.h> using namespace std; int n; vector<int> v,pref; bool check(int i) { return ((i==0 || v[i] < v[i-1])&&(i==n-1 || v[i] < v[i+1])); } vector<int> raz; void init(int N, std::vector<int> H) { v = H; n = N; pref.resize(n,0); for(int i = 0; i < n; i++) pref[i] = (i>0?pref[i-1]:0)+check(i); int prev = 0; for(;!check(prev);prev++); for(int i = prev+1,run = 0; i < n; i++) { if(check(i)) { raz.push_back(run-max(v[i],v[prev])); prev = i; run = 0; } else run = max(v[i],run); } } int max_towers(int l, int r, int d) { if(l==r)return 1; if(d==1) return pref[r]-(l>0?pref[l-1]:0) - check(l)- check(r)+(v[l] < v[l+1])+(v[r]<v[r-1]); if(r-l==n-1) { return raz.end()-upper_bound(raz.begin(),raz.end(),d)+1; } return 41; }
#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...