This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
/*
* 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... |