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

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

균형 잡힌 소 구간

면접 대비

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

요약
각 소가 K비트 특징 ID로 주어질 때, K개 특징이 모두 같은 횟수로 나타나는 가장 긴 연속 구간의 길이를 구한다.
난이도

보통10점 중 7점

유형
해시맵, 누적 합, 비트 연산, 배열
정답자
아직 제출이 없습니다

문제

농부 John의 소 NN마리(1≤N≤100,0001 \le N \le 100{,}000)는 여러 공통점을 가지고 있다. John은 이 공통점을 서로 다른 KK가지 특성(1≤K≤301 \le K \le 30)으로 정리했다. 예를 들어 특성 1번을 가진 소는 얼룩무늬가 있을 수 있고, 특성 2번을 가진 소는 Pascal보다 C를 선호할 수 있는 식이다.

각 소는 특성 ID로 표현된다. 특성 ID는 KK비트 정수 하나로, 그 이진 표현이 소가 어떤 특성을 가지는지를 나타낸다. 이진수를 오른쪽(최하위 비트)에서 왼쪽으로 읽을 때, 2i−12^{i-1} 자리의 값이 11이면 그 소는 특성 ii번을 가진다. 예를 들어 특성 ID가 1313이면 이진수로 11011101이므로, 그 소는 특성 11, 33, 44번은 가지지만 특성 22번은 가지지 않는다.

John은 소 1…N1 \dots N번을 한 줄로 세운 뒤, 어떤 연속 구간들이 균형을 이룬다는 것을 알아차렸다. 연속한 소 구간 i…ji \dots j가 균형을 이룬다는 것은, KK가지 특성 각각이 그 구간 안에서 정확히 같은 수의 소에게 나타난다는 뜻이다. 균형을 이루는 가장 큰 구간의 크기(소의 수)를 구하여라.

입력

  • 첫째 줄: 공백으로 구분된 두 정수 NN과 KK.
  • 둘째 줄부터 N+1N+1째 줄까지: i+1i+1째 줄에는 소 ii의 특성 ID인 KK비트 정수 하나가 주어진다. 이 정수의 최하위 비트가 11이면 소가 특성 1번을 가지고, 최상위 비트가 11이면 특성 KK번을 가진다.

출력

  • 첫째 줄에 균형을 이루는 가장 큰 연속 구간에 속한 소의 수를 정수 하나로 출력한다. 균형을 이루는 비어 있지 않은 구간이 하나도 없으면 00을 출력한다.

힌트

이 줄에는 특성이 33가지인 소가 77마리 있다. 아래 표는 그 대응 관계를 정리한 것이다:

             Feature 3:   1   1   1   0   0   1   0
             Feature 2:   1   1   1   1   0   0   1
             Feature 1:   1   0   1   0   1   0   0
             Key:         7   6   7   2   1   4   2
             Cow #:       1   2   3   4   5   6   7

소 3번부터 소 6번까지의 구간(크기 44)에서는 각 특성이 정확히 22마리의 소에게 나타난다:

             Feature 3:     1   0   0   1  -> two total
             Feature 2:     1   1   0   0  -> two total
             Feature 1:     1   0   1   0  -> two total
             Key:           7   2   1   4
             Cow #:         3   4   5   6

예제1

  1. 예제 1

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