만드는 중입니다

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

유일한 최빈값

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

요약
0부터 3까지의 값으로 이루어진 배열이 주어질 때, 각 값이 다른 모든 값보다 엄격히 많이 나타나는 가장 긴 부분 배열의 길이를 구합니다.
난이도

보통10점 중 5점

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

문제

길이가 NN인 정수 배열 AA(인덱스는 11부터 NN까지)가 주어진다. 각 AiA_i는 00, 11, 22, 33 중 하나이다.

AA의 부분 배열 ⟨l,r⟩\langle l, r \rangle은 [Al,Al+1,⋯ ,Ar][A_l, A_{l+1}, \cdots, A_r]이며, 크기는 r−l+1r - l + 1이다.

값 xx가 부분 배열 ⟨l,r⟩\langle l, r \rangle의 유일한 최빈값이라는 것은, 그 부분 배열에서 xx가 다른 어떤 값보다 엄격하게 많이 나타난다는 뜻이다.

x∈{0,1,2,3}x \in \{0, 1, 2, 3\}각각에 대해, xx가 유일한 최빈값인 가장 긴 부분 배열의 크기를 구하라. 어떤 부분 배열에서도 xx가 유일한 최빈값이 될 수 없다면 그 사실을 판단하라.

입력

첫 줄에 배열의 크기 NN (1≤N≤100 0001 \le N \le 100\,000)이 주어진다. 다음 줄에 NN개의 정수 AiA_i (Ai∈{0,1,2,3}A_i \in \{0, 1, 2, 3\})가 주어진다.

출력

한 줄에 정수 네 개를 공백으로 구분하여 출력한다. 순서대로 x=0,1,2,3x = 0, 1, 2, 3에 대한 답이다. xx가 유일한 최빈값인 부분 배열이 존재하면 그중 가장 긴 것의 크기를, 없으면 00을 출력한다.

예제4

  1. 예제 1

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

    입력
    12
    2 0 1 0 2 1 1 0 2 3 3 3
    
    예상 출력
    4 9 1 9
    
  3. 예제 3

    입력
    2
    0 2
    
    예상 출력
    1 0 1 0
    
  4. 예제 4

    입력
    12
    3 0 2 2 1 0 2 1 3 3 2 3
    
    예상 출력
    1 5 11 8