아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

바리스타 폴의 커피콩 고르기

시간 제한1.5초메모리 제한64 MB

요약
고른 값들의 이웃한 쌍이 k로 나눈 나머지가 같거나 차이가 d 이하가 되도록 주어진 수열에서 가장 긴 부분수열의 길이를 구한다.
난이도

보통10점 중 7점

유형
동적 계획법, 세그먼트 트리, 배열, 누적 합
정답자
아직 제출이 없습니다

문제

바리스타 폴 앞에 커피콩 NN개가 한 줄로 놓여 있다. 폴은 이 중에서 몇 개를 골라 추출한다. 고른 콩은 원래 놓인 순서를 그대로 지킨다.

커피콩마다 종류를 나타내는 정수가 하나씩 붙어 있다. 고른 콩의 종류를 순서대로 적은 수열을 AA라고 하자. 추출물의 질이 좋다는 것은 22 이상인 모든 ii에 대해 다음 두 조건 중 적어도 하나가 성립한다는 뜻이다.

  • Ai−1≡Ai(modk)A_{i-1} \equiv A_i \pmod k
  • Ai−1−d≤Ai≤Ai−1+dA_{i-1} - d \le A_i \le A_{i-1} + d

질이 좋은 추출물 중에서 커피콩을 가장 많이 고를 때, 그 개수를 구하라.

입력

첫째 줄에 NN, kk, dd가 공백으로 구분되어 주어진다. (1≤N≤5×1051 \le N \le 5 \times 10^5, 1≤k,d≤5×1051 \le k, d \le 5 \times 10^5)

둘째 줄에 커피콩의 종류를 놓인 순서대로 나타낸 길이 NN의 수열 S1,S2,…,SNS_1, S_2, \dots, S_N이 주어진다. (1≤Si≤5×1051 \le S_i \le 5 \times 10^5)

출력

질이 좋은 추출물에 들어가는 커피콩 개수의 최댓값을 출력한다.

예제3

  1. 예제 1

    입력
    9 7 2
    1 5 12 10 8 6 4 4 3
    
    예상 출력
    8
    
  2. 예제 2

    입력
    1 3 1
    7
    
    예상 출력
    1
    
  3. 예제 3

    입력
    5 1 1
    1 100 2 500000 3
    
    예상 출력
    5