제출 #1186858

#제출 시각아이디문제언어결과실행 시간메모리
1186858loomGlobal Warming (CEOI18_glo)C++20
100 / 100
36 ms4752 KiB
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define inf 5e18
#define nl '\n'

inline void solve(){
   int n, x;
   cin>>n>>x;
   int a[n];
   for(int i=0; i<n; i++) cin>>a[i];

   int pre[n];
   vector<int> v;
   for(int i=0; i<n; i++){
      if(v.empty() or v.back() < a[i]){
         v.push_back(a[i]);
         pre[i] = v.size();
         continue;
      }

      int ix = lower_bound(v.begin(), v.end(), a[i]) - v.begin();
      v[ix] = a[i];
      pre[i] = ix+1;
   }  

   int ans = 0;
   v.clear();
   for(int i=n-1; i>=0; i--){
      if(v.empty() or v.back() > a[i]) v.push_back(a[i]);
      else *--upper_bound(v.rbegin(), v.rend(), a[i]) = a[i];

      if(i == 0) ans = max(ans, (int)v.size());
      else ans = max(ans, pre[i-1] + (int)v.size() - (upper_bound(v.rbegin(), v.rend(), a[i-1] - x) - v.rbegin()));
   }

   cout<<ans;
}

signed main(){
   ios_base::sync_with_stdio(0);
   cin.tie(NULL);cout.tie(NULL);

   int t = 1;
   //cin>>t;
   while(t--) solve();

   return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...