#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
#include <iostream>
using namespace std;
#define ll long long
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
ll n, d;
cin >> n >> d;
ll t[n];
for (ll i = 0; i < n; ++i){
cin >> t[i];
}
ll dp[n];
if (d == 0){
for (ll i = 0; i < n; ++i) dp[i] = 1;
ll runningMax = 0;
for (ll i = 0; i < n; ++i){
ll cur = t[i];
for (ll j = 0; j < i; ++j){
if (t[j] < t[i]){
dp[i] = max(dp[j]+1, dp[i]);
}
}
runningMax = max(runningMax, dp[i]);
}
cout << runningMax << "\n";
return 0;
}
ll maximumLIS = 0;
for (ll left = 0; left < n; ++left){
for (ll right = left; right < n; ++right){
for (ll x = -d; x <= d; ++x){
for (ll i = 0; i < n; ++i) dp[i] = 1;
for (ll i = left; i <= right; ++i) t[i] += x;
//compute lis
dp[0] = 1;
ll runningMax = 0;
for (ll i = 0; i < n; ++i){
ll cur = t[i];
for (ll j = 0; j < i; ++j){
if (t[j] < t[i]){
dp[i] = max(dp[j]+1, dp[i]);
}
}
runningMax = max(runningMax, dp[i]);
}
maximumLIS = max(maximumLIS, runningMax);
for (ll i = left; i <= right; ++i) t[i] -= x;
}
}
}
cout << maximumLIS << "\n";
}
| # | 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... |