AAQQZ

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

요약
수열의 연속한 한 구간을 오름차순으로 정렬한 뒤 얻을 수 있는 가장 긴 회문 부분 수열의 길이를 구한다.
난이도

어려움10점 중 9점

유형
구현, 수학, 그리디, 완전 탐색
정답자
아직 제출이 없습니다

문제

2015 年の国際情報オリンピックはカザフスタンで行われる.カザフスタンの「カザフ」は,アルファベッ トで “QAZAQ” と綴られることがある.この QAZAQ は回文である.このことを知った JOI 君は,回文が 好きになって,目についた文字列から回文を作ることにした.

JOI君が見つけたのは長さが N の文字列である.各文字には1からC までの整数が定まっており,文字列の 文字を整数に置き換えた数列をS = (S1, S2, . . . , SN)とする.この数列のi番目から j番目まで (1 ≦ i ≦ j ≦ N) を取り出した数列 (Si, Si+1, . . . , Sj) を断片 (i, j) と呼ぶ.断片 (i, j) がそれを逆転させた数列と等しいとき, すなわち,(Si , Si+1, . . . , Sj) = (Sj , Sj−1, . . . , Si) が成り立つとき,断片 (i, j) は回文である.

JOI 君は以下の操作により回文を作る.

  1. まず,S の断片を 1 つ選ぶ.選んだ断片を T とおく.
  2. 断片 T を昇順にソートしたものを T ′ とおく.
  3. 数列 S に対し,断片 T を T ′ に置き換える.置き換えたものを S′ とする.すなわち,JOI 君が断片 (i, j) を選んだとき,Si , Si+1, . . . , Sj を昇順にソートしたものを T′i ≦ T′i+1 ≦ . . . ≦ T′j として,S′ = (S1, S2, . . . , Si−1, T′i , T′i+1 , . . . , T′j , Sj+1, . . . , SN) とする.
  4. その後,S′ の断片で回文になっているものを探す.

JOI 君はこの操作により,できるだけ長い回文を作りたい.

JOI 君の見つけた文字列を表す数列 S が与えられる.JOI 君が作ることができる回文の長さの最大値を求 めよ.

입력

標準入力から以下の入力を読み込め.

  • 1 行目には,整数 N,C が空白を区切りとして書かれている.N は JOI 君の見つけた文字列の長さを表 す.C は文字に定められた整数の上限を表す.
  • 続く N 行には,JOI 君の見つけた文字列を表す数列 S の情報が書かれている.これらの行のうちの i 行目 (1 ≦ i ≦ N) には整数 Si が書かれている.Si は数列 S の i 番目の整数を表す.

출력

標準出力に,JOI 君が作ることができる回文の長さの最大値を表す整数を 1 行で出力せよ.

제한

  • 1 ≦ N ≦ 3 000.
  • 1 ≦ C ≦ 3 000.
  • 1 ≦ Si ≦ C (1 ≦ i ≦ N).

예제2

  1. 예제 1

    입력
    12 26
    26
    17
    17
    17
    1
    26
    1
    17
    19
    20
    1
    14
    
    예상 출력
    8
    
  2. 예제 2

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