#include <bits/stdc++.h>
using namespace std;
#define int long long
int n, x;
int mx(vector<int>a, int l, int r){
vector<int>dp;
for(int i=1; i<=n; i++){
if(i>=l && i<=r){
int pos=lower_bound(dp.begin(),dp.end(), a[i]+x)-dp.begin();
if(pos==dp.size()){
dp.push_back(a[i]+x);
}else{
dp[pos]=a[i]+x;
}
}else{
int pos=lower_bound(dp.begin(),dp.end(), a[i])-dp.begin();
if(pos==dp.size()){
dp.push_back(a[i]);
}else{
dp[pos]=a[i];
}
}
}return dp.size();
}
int32_t main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cin>>n>>x;
vector<int> a(n+1);
int mx2=0;
for(int i=1; i<=n; i++){
cin>>a[i];
mx2=max(mx2, a[i]);
}int mx1=0;
x=min(x, mx2);
if(x==0){
mx1= max(mx1, mx(a, 0, 0));
}
else{
mx1= max(mx1, mx(a, 0, 0));
for(int i=1; i<=n; i++){
/*for(int j=i; j<=n; j++){
mx1= max(mx1, mx(a, i, j));
}*/
mx1= max(mx1, mx(a, i-1, i));
mx1= max(mx1, mx(a, i, i));
mx1= max(mx1, mx(a, max(1LL, i-2), i));
mx1= max(mx1, mx(a, max(1LL, i-3), i));
}
}cout<<mx1<<endl;
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... |