#include <iostream>
#include <math.h>
#include <vector>
#include <string>
#include <algorithm>
#include <queue>
#include <stack>
#include <map>
#include <cstring>
#include <iomanip>
#include <set>
#include <bitset>
using namespace std;
using ll = long long;
using pii = pair<int,int>;
using piii = tuple<int,int,int>;
using pibii = tuple<int,bool,int,int>;
#define endl '\n'
#define f first
#define s second
int main(){
int n,m;cin >> n >> m;
vector<int> lis = {0};
vector<int> prefix;
vector<int> arr;
for(int i = 0;i < n;i++){
int g;cin >> g;
arr.emplace_back(g);
auto it = lower_bound(lis.begin(),lis.end(),g);
// for(auto k:lis) cout << k << " ";
// cout << endl;
if(it != lis.end()){
*it = min(*it,g);
prefix.emplace_back(it-lis.begin());
}
else{
prefix.emplace_back(lis.size());
lis.emplace_back(g);
}
}
// for(auto k:prefix) cout << k << " ";
// cout << endl;
int ans = 0;
for(int i = 0;i < n-1;i++){
//cout << arr[i] << ans << endl;
if(arr[i] <= arr[i+1]+m){
ans = max(ans,prefix[i]+prefix[n-1]-prefix[i+1]);
}
}
cout << ans;
}
| # | 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... |