#include <bits/stdc++.h>
using namespace std;
int lis(vector<int> const& a) {
int n = a.size();
const int INF = 1e9;
vector<int> d(n + 1, INF);
d[0] = -INF;
for (int i = 0; i < n; i++) {
// Use lower_bound for non-decreasing LIS
int l = upper_bound(d.begin(), d.end(), a[i]) - d.begin();
if (d[l - 1] < a[i] && a[i] < d[l])
d[l] = a[i];
}
int ans = 0;
for (int l = 0; l <= n; l++) {
if (d[l] < INF)
ans = l;
}
return ans;
}
int main() {
int n,x;
cin >> n>>x;
vector<int> v(n);
for (int i = 0; i < n; i++) cin >> v[i];
int mx = 0;
for (int i = 0; i < x; i++){
for(int j=0;j<n;j++) {
v[j]-=i;
mx = max(mx,lis(v));
}
mx = max(mx,lis(v));
}
mx = max(mx,lis(v));
cout << mx << 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... |