Submission #1370608

#TimeUsernameProblemLanguageResultExecution timeMemory
1370608JohanGlobal Warming (CEOI18_glo)C++20
62 / 100
30 ms10576 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long 
const int INF = 1e6 + 5;

signed main(){
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int n, x;
  cin >> n >> x;
  vector < int > a(n);
  for(int &i : a)cin >> i;
  vector < int > lis, pr(n), pr_id(n);
  for(int i = 0; i < n; i++){
    auto it = lower_bound(lis.begin(), lis.end(), a[i]);
    if(it == lis.end())
      lis.push_back(a[i]);
    else
      *it = a[i]; 
    pr_id[i] = lis.back();
    pr[i] = (int)lis.size();
  } 
  vector < int > lds, suf(n), suf_id(n);
  for(int i = n - 1; i >= 0; i--){
    auto it = lower_bound(lds.begin(), lds.end(), a[i], greater < int > ());
    if(it == lds.end())
      lds.push_back(a[i]);
    else
      *it = a[i]; 
    suf_id[i] = lds.back();
    suf[i] = (int)lds.size();
  }
  int mx = pr[n - 1];
  for(int i = 0; i < n - 1; i++){
    if(pr_id[i] - x < suf_id[i + 1]){
      mx = max(mx, pr[i] + suf[i + 1]);
    }
  }
  cout << mx << endl;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...