이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
/*
* author : Apiram
* created: 29.06.2023 01:29:41
*/
#include<bits/stdc++.h>
using namespace std;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
int n,x;cin>>n>>x;
vector<long long>arr(n);
for (int i = 0;i<n;++i){
cin>>arr[i];
}
const long long inf = 1e12;
int ans = 0;
vector<vector<long long>>dp(n + 1,vector<long long>(2,inf));
for (int i = 0;i<n;++i){
int left = 0,right = n - 1;
int pos = -1;
while(left<=right){
int mid = (left + right)>>1;
if (dp[mid][0] < arr[i]){
pos = mid;
left = mid + 1;
}
else right = mid - 1;
}
dp[pos + 1][0] = min(arr[i],dp[pos + 1][0]);
ans = max(ans,pos + 2);
left = 0,right = n - 1;
pos = -1;
while(left<=right){
int mid = (left + right)>>1;
if (dp[mid][0] < arr[i] + x){
pos = mid;
left = mid + 1;
}
else if (dp[mid][1] < arr[i]){
pos = mid;
left = mid + 1;
}
else right = mid - 1;
}
ans = max(pos + 2,ans);
dp[pos + 1][1] = min(dp[pos + 1][1],arr[i]);
}
cout<<ans<<'\n';
return 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... |