간단한 문제

면접 대비

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

요약
수열 b와 정수 p가 주어질 때, 모든 i에서 b_i가 길이 i인 접두사에서 p로 나눈 나머지별 개수의 최댓값이 되는 순열 a가 존재하는지 판정한다.
난이도

보통10점 중 7점

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

문제

PULSE를 떠나서 대학원에 입학한 산지니는 휴일 태종대에서 월척을 낚기 위해 낚시를 하고 있다. 하지만 몇 시간이 지나도 아무 소식이 없다. 산지니는 낚싯대를 너무 오래 쥐고 있어 졸리던 차에 간단한 수열을 생각하게 되었다.

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

  • S_i,j(1≤i≤N)S\_{i,j}(1 \leq i \leq N)는 순열 aa의 연속 부분 수열 a_1,a_2,...,a_ia\_1, a\_2, ..., a\_i의 원소 중 pp로 나눈 나머지가 j(0≤j<p)j(0 \leq j < p)인 원소의 개수이다.
  • b_i(1≤i≤N)b\_i(1 \leq i \leq N)는 S_i,0,S_i,1,...,S_i,p−1S\_{i,0}, S\_{i,1}, ... , 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의 원소 b_1,b_2,…,b_Nb\_1, b\_2, …, b\_N이 공백으로 구분되어 차례대로 주어진다. (1≤b_i≤N)(1 \leq b\_i \leq N)

출력

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

힌트

길이가 NN인 순열은 11부터 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