만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

간단한 문제

시간 제한1초메모리 제한1024 MB

요약
정수 p와 수열 b가 주어질 때, 1부터 N까지의 순열 중 각 접두부분의 나머지 류 최대 개수가 b_i와 같아지는 순열이 있는지 판별합니다.
난이도

보통10점 중 6점

유형
그리디, 수학, 구현
정답자
아직 제출이 없습니다

문제

PULSE를 떠나 대학원에 입학한 산지니는 휴일 태종대에서 월척을 낚으려고 낚시를 하고 있다. 그러나 몇 시간이 지나도 입질이 없다. 낚싯대를 너무 오래 쥐고 있어 졸음이 온 산지니는 간단한 수열을 생각하기 시작했다.

길이가 NN인 순열 aa에 대해 SS와 수열 bb를 다음과 같이 정의하자.

  • Si,jS_{i,j} (1≤i≤N1 \leq i \leq N)는 순열 aa의 연속 부분 수열 a1,a2,…,aia_1, a_2, \ldots, a_i의 원소 중 pp로 나눈 나머지가 jj (0≤j<p0 \leq j < p)인 원소의 개수이다.
  • bib_i (1≤i≤N1 \leq i \leq N)는 Si,0,Si,1,…,Si,p−1S_{i,0}, S_{i,1}, \ldots, S_{i,p-1} 중 최댓값이다.

산지니는 조금 더 생각하다가, 주어진 pp와 수열 bb에 대해 순열 aa가 존재하는지 궁금해졌다. 조건을 만족하는 순열 aa가 존재하는지 알아보자.

입력

첫 번째 줄에 수열 bb의 길이 NN과 정수 pp가 공백으로 구분되어 주어진다. (1≤N,p≤5×105)(1 \leq N, p \leq 5 \times 10^5)

두 번째 줄에 수열 bb의 원소 b1,b2,…,bNb_1, b_2, \ldots, b_N이 공백으로 구분되어 차례대로 주어진다. (1≤bi≤N)(1 \leq b_i \leq N)

출력

조건을 만족하는 순열 aa가 존재하면 YES를, 존재하지 않으면 NO를 출력한다.

힌트

길이가 NN인 순열은 1부터 NN까지의 정수가 각각 한 번씩만 사용되는 유한수열이다. 예를 들어 {1,2,4,3}\{1, 2, 4, 3\}은 순열이지만, {1,4,2}\{1, 4, 2\}와 {1,3,3,2}\{1, 3, 3, 2\}는 순열이 아니다.

예제4

  1. 예제 1

    입력
    3 1
    1 2 3
    
    예상 출력
    YES
    
  2. 예제 2

    입력
    5 2
    1 2 2 2 2
    
    예상 출력
    NO
    
  3. 예제 3

    입력
    3 6
    1 1 1
    
    예상 출력
    YES
    
  4. 예제 4

    입력
    7 2
    1 2 3 2 3 3 4
    
    예상 출력
    NO