카드 팩 구매하기

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

요약
카드 열에서 중복 없는 종류로 이루어진 길이 L의 구간 M개를 서로 겹치지 않게 골라, 가능한 L의 최댓값을 구한다.
난이도

보통10점 중 7점

유형
이분 탐색, 그리디, 슬라이딩 윈도우, 투 포인터
정답자
아직 제출이 없습니다

문제

NN장의 카드가 한 줄로 진열되어 있다. 카드의 순서는 바꿀 수 없다.

다음 규칙을 모두 만족하면서 정확히 MM개의 카드 팩을 만든다.

  • 하나의 카드 팩은 좌우로 연속한 카드들로 구성된다.
  • 모든 카드 팩에 들어 있는 카드 수는 서로 같다.
  • 하나의 카드 팩 안에는 같은 종류의 카드가 두 장 이상 들어 있을 수 없다.
  • 하나의 카드는 최대 하나의 카드 팩에만 속할 수 있다.

가격은 팩에 들어 있는 카드 수와 관계없이 일정하므로, 하나의 카드 팩에 들어 있는 카드 수가 최대가 되도록 구성하려 한다. 규칙을 모두 만족하면서 하나의 카드 팩에 넣을 수 있는 최대 카드 수를 구하라.

입력

첫째 줄에 두 자연수 NN과 MM이 공백으로 구분되어 주어진다. NN은 진열된 카드 수이고, MM은 구매해야 할 카드 팩 수이다.

둘째 줄에 NN개의 자연수 식별 번호가 공백으로 구분되어 주어진다. 가장 왼쪽 카드부터 가장 오른쪽 카드까지 실제 진열 순서대로 주어진다.

각 식별 번호는 11 이상 500000500000 이하이다.

출력

규칙을 모두 만족하면서 하나의 카드 팩에 구성할 수 있는 최대 카드 수를 한 줄에 출력한다. MM개의 팩을 만들 수 없으면 00을 출력한다.

힌트

세 번째 샘플은 Small subtask에서는 나오지 않는다.

예제3

  1. 예제 1

    입력
    10 1
    5 2 5 3 4 1 3 1 2 1
    
    예상 출력
    5
    
  2. 예제 2

    입력
    10 1
    4 4 4 5 4 4 3 4 5 4
    
    예상 출력
    3
    
  3. 예제 3

    입력
    10 3
    10 9 7 7 9 8 8 8 2 1
    
    예상 출력
    3