#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ld long double
#define MOD 998244353
int t[200005], p[200005], INF = 1e9;
void solve()
{
int n, x, ans = 0;
cin >> n >> x;
for (int i = 0; i < n; i++)
cin >> t[i];
vector<int> dp(n, INF);
for (int i = 0; i < n; i++)
{
int j = lower_bound(dp.begin(), dp.end(), t[i]) - dp.begin();
dp[j] = t[i];
p[i] = j + 1;
ans = max(ans, p[i]);
}
dp = vector<int>(n, INF);
for (int i = n - 1; i >= 0; i--)
{
int pos = lower_bound(dp.begin(), dp.end(), x - t[i]) - dp.begin();
ans = max(ans, p[i] + pos);
pos = lower_bound(dp.begin(), dp.end(), -t[i]) - dp.begin();
dp[pos] = -t[i];
}
cout << ans;
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int t = 1;
// cin >> t;
// cout << fixed << setprecision(12);
for (int i = 1; i <= t; i++)
{
solve();
}
}
| # | 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... |