지구 온난화

시간 제한2초메모리 제한512 MB

요약
연속한 구간 하나와 |d| <= x인 정수 d를 골라 그 구간의 온도를 d만큼 바꾼 뒤, 얻을 수 있는 최장 증가 부분 수열의 최대 길이를 구한다.
난이도

어려움10점 중 8점

유형
동적 계획법, 이분 탐색, 세그먼트 트리, 그리디
정답자
아직 제출이 없습니다

문제

지구 온난화는 중요한 문제이고 Johnny도 이를 알고 있다. 그는 역사상의 기온을 분석해 기온이 엄격히 증가하는 날들의 부분 수열(반드시 연속일 필요는 없다)을 찾기로 했다. 그럼 회의론자들도 납득할 것이다!

Johnny는 연속한 n일 동안의 역사 데이터를 찾았다. i번째 날의 기온은 tit_i이다.

형식적으로, 우리는 (t1,t2,…,tn)(t_1, t_2, \ldots, t_n)의 최장 증가 부분 수열(LIS)의 길이, 즉 1≤a1<a2<…<ak≤n1 \le a_1 < a_2 < \ldots < a_k \le n이고 ta1<ta2<…<takt_{a_1} < t_{a_2} < \ldots < t_{a_k}인 증가하는 인덱스 수열을 고를 수 있는 최대 kk를 구하고자 한다.

Johnny는 정말 긴 부분 수열을 원했기 때문에 조금 속이기로 했다. 먼저 비어 있지 않은 날들의 구간과 정수 dd(−x≤d≤x-x \le d \le x)를 고르고, 그 구간에 속한 각 날의 기온을 dd만큼 올린다. 그 정도의 작은 변화는 아마 사회에서 눈치채지 못할 것이고, 동시에 LIS를 더 길게 만들 것이다. d=0d = 0을 고르는 것도 허용된다.

변화를 준 뒤 LIS의 길이로 가능한 최댓값은 얼마인가?

입력

표준 입력의 첫 번째 줄에는 공백으로 구분된 두 정수 nn과 xx(1≤n≤200 0001 \le n \le 200\ 000, 0≤x≤1090 \le x \le 10^9)가 주어진다. 이는 날의 수와 dd의 절댓값의 한계이다.

두 번째 줄에는 공백으로 구분된 nn개의 정수 t1,t2,…,tnt_1, t_2, \ldots, t_n(1≤ti≤1091 \le t_i \le 10^9)이 주어진다. 이는 역사상의 기온 수열이다.

출력

한 번의 변화를 준 뒤 LIS의 길이로 가능한 최댓값을 한 정수로 출력한다.

예제1

  1. 예제 1

    입력
    8 10
    7 3 5 12 2 7 3 4
    
    예상 출력
    5