제출 #652176

#제출 시각아이디문제언어결과실행 시간메모리
652176pauloamedGlobal Warming (CEOI18_glo)C++14
100 / 100
44 ms4140 KiB
#include<bits/stdc++.h>
using namespace std;

const int MAXN = 200010;

int N, X;
int v[MAXN];

int main(){
  cin.tie(NULL)->sync_with_stdio(false);
  cin >> N >> X;
  for(int i = 0; i < N; ++i) cin >> v[i];

  vector<pair<int,int>> lis;
  // first: sem X
  // second: sem ou com X
  for(int i = 0; i < N; ++i){
    {
      auto it = lower_bound(lis.begin(), lis.end(), v[i]+X, 
        [](pair<int,int> el, int x){
          return x > min(el.first, el.second);
        }
      );
      if(it == lis.end()) lis.push_back({INT_MAX, v[i]+X});
      else it->second = v[i]+X;
    }

    {
      auto it = lower_bound(lis.begin(), lis.end(), v[i], 
        [](pair<int,int> el, int x){
          return x > el.first;
        }
      );
      it->first = v[i];
    }

    // for(int j = 0; j < lis.size(); ++j){
    //   cout << lis[j].first << " " << lis[j].second << " , ";
    // }
    // cout << "\n";
  }
  cout << lis.size() << "\n";
}
#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...