#include <bits/stdc++.h>
//#pragma GCC optimize("Ofast")
//#pragma GCC optimize("O3")
//#pragma GCC target("avx2")
using namespace std;
//#define int long long
#define ll long long
#define X first
#define Y second
#define lc (id<<1)
#define rc (lc|1)
#define mid ((l+r+1)>>1)
#define pb push_back
#define lb lower_bound
#define ub upper_bound
#define mp make_pair
#define sep ' '
#define endl "\n"
#define migmig ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define FileIO freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout);
#define all(x) x.begin(), x.end()
#define ret(x) {cout << x << endl; return;}
typedef pair<int, int> pii;
typedef pair<ll , ll > pll;
const int N = 2e5+13;
const int LOG = 23;
const int MOD = 1e9 + 7; //998244353; //1e9+9;
const int INF = 1e9; //1e18;
const int dx[4] = {1, -1, 0, 0};
const int dy[4] = {0, 0, 1, -1};
ll md(ll x) {x%=MOD; return (x < 0 ? x+MOD : x);}
ll GCD(ll _a, ll _b) { return (!_b ? _a : GCD(_b, _a % _b)); }
ll POW(ll _a, ll _b) { return !_b ? 1 : ((_b & 1 ? _a : 1) * POW(_a * _a % MOD, _b / 2)) % MOD;}
int n, x, ans;
int a[N], dp[N];
vector<int> vec;
void F() {
cin >> n >> x;
for(int i = 1; i <= n; i++) {
cin >> a[i];
a[i] *= -1;
}
vec.pb(a[n]);
dp[n] = 1;
int j;
for(int i = n-1; i > 0; i--) {
if(a[i] >= vec.back()) {
vec.pb(a[i]);
dp[i] = vec.size();
}
else {
j = ub(all(vec), a[i]) - vec.begin();
vec[j] = a[i];
dp[i] = j + 1;
}
}
for(int i = 1; i <= n; i++) {
a[i] *= -1;
a[i] -= x;
}
ans = dp[1];
vec.clear();
vec.pb(a[1]);
int temp;
for(int i = 2; i <= n; i++) {
temp = lb(all(vec), a[i]+x) - vec.begin();
ans = max(ans, temp + dp[i]);
if(a[i] >= vec.back()) {
vec.pb(a[i]);
}
else {
j = ub(all(vec), a[i]) - vec.begin();
vec[j] = a[i];
}
}
ret(ans);
}
int32_t main() {
migmig;
//PREP();
int t=1;
//cin >> t;
while(t--)
F();
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... |