구간이 이븐하지 않아요.

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

요약
구간을 중간에서 나눈 두 절반이 같은 값의 중복집합을 이룰 때, 그런 구간 중 가장 긴 것의 길이를 구한다.
난이도

보통10점 중 7점

유형
해시맵, 누적 합, 완전 탐색, 구현
정답자
아직 제출이 없습니다

문제

길이가 같은 두 수열 ss와 tt가 다음의 연산을 원하는 만큼 반복해 서로 같아질 수 있다면, 두 수열은 서로 이븐하다.

  • 1≤i\<j≤∣s∣1\leq i\<j\leq |s|를 만족하는 두 양의 정수 ii와 jj를 골라 s_is\_i와 s_js\_j의 값을 바꾼다.

길이 NN의 수열 AA가 주어진다. A\[l,r]=\[A_l,A_l+1,…,A_r]A\[l,r]=\[A\_{l},A\_{l+1},\dots,A\_{r}]을 AA의 ll번째 원소부터 rr번째 원소까지만을 포함하는 연속된 부분 수열이라고 할 때, 다음 조건을 만족시키는 A\[l,r]A\[l,r]의 최대 길이를 구해보자.

m=⌊l+r2⌋m=\left\lfloor\frac{l+r}{2}\right\rfloor에 대하여, A\[l,m]A\[l,m]과 A\[m+1,r]A\[m+1,r]이 서로 이븐하다.

입력

첫 번째 줄에 수열 AA의 길이인 정수 NN이 주어진다. (1≤N≤5,000)(1\leq N \leq 5\\,000)

두 번째 줄에 수열 AA의 원소를 나타내는 NN개의 정수 A_1,A_2,…,A_NA\_{1},A\_{2},\dots,A\_{N}이 공백으로 구분되어 주어진다. (1≤A_i≤109)\left(1\leq A\_i \leq 10^{9}\right)

출력

연속된 부분 수열 A\[l,r]A\[l,r]을 절반으로 나눠 얻은 두 수열이 서로 이븐할 때, A\[l,r]A\[l,r]의 최대 길이를 출력한다.

만약 그러한 연속된 부분 수열이 존재하지 않는다면, 00을 출력한다.

예제2

  1. 예제 1

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

    입력
    5
    1 2 3 2 3
    
    예상 출력
    4