이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e5;
int n, a[MAXN],l[MAXN];
bool ok = true;
int maxi = 0,idx=0;
void init(int N, vector<int> H){
n = N;
ok = false;
maxi = 0;
for (int i=0; i<n; ++i){
a[i] = H[i];
maxi = max(maxi,a[i]);
if (a[i] == maxi) idx = i;
}
}
int max_towers(int L, int R, int D){
if (R < idx or L > idx) return 1;
if (max(a[L],a[R]) <= maxi-D) return 2;
return 1;
int ans = 0;
if (!ok){
fill_n(&l[0],MAXN,0);
ok = true;
set<int> st;
st.emplace(INT_MAX);
st.emplace(INT_MIN);
vector<pair<int,int>> v;
for (int i=0; i<n; ++i){
v.emplace_back(a[i],i);
}
sort(v.begin(),v.end());
int idx = 0;
for (auto i:v){
while (idx < n and v[idx].first <= i.first-D){
st.emplace(v[idx].second);
idx++;
}
auto a = st.upper_bound(i.second), b = a;
--a;
if ((*b) != INT_MAX){
l[*b] = *a;
}
}
}
vector<int> dp(R+1,1);
for (int i=L; i<=R; ++i){
int prev = l[i];
if (prev >= L){
dp[i] = dp[prev]+1;
}
if (i) dp[i] = max(dp[i],dp[i-1]);
}
return dp[R];
}
컴파일 시 표준 에러 (stderr) 메시지
towers.cpp: In function 'int max_towers(int, int, int)':
towers.cpp:23:6: warning: unused variable 'ans' [-Wunused-variable]
23 | int ans = 0;
| ^~~
# | 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... |