이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<bits/stdc++.h>
using namespace std;
const int mxN = 2e5+5;
int n, x, arr[mxN], dp[mxN];
int main() {
cin >> n >> x;
for(int i = 1; i <= n; ++i) {
cin >> arr[i];
}
vector<int> lis;
for(int i = 1; i <= n; ++i) {
auto itr = lower_bound(lis.begin(), lis.end(), arr[i]);
dp[i] = itr - lis.begin() + 1;
if(itr == lis.end()) lis.emplace_back(arr[i]);
else *itr = arr[i];
}
int ans = 0;
vector<int> lds;
for(int i = n; i >= 1; --i) {
auto itr = lower_bound(lds.begin(), lds.end(), -arr[i]);
int from_right = itr - lds.begin();
ans = max(ans, dp[i] + from_right);
arr[i] += x;
auto itr2 = lower_bound(lds.begin(), lds.end(), -arr[i]);
if(itr2 == lds.end()) lds.emplace_back(-arr[i]);
else *itr2 = -arr[i];
}
cout << ans;
}
# | 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... |