만드는 중입니다

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

더블 덱

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

요약
두 덱에 각각 N×K장의 카드가 있을 때, 맨 위 카드가 같으면 짝을 맞추고 다르면 한 장을 버리는 방식으로 얻을 수 있는 최대 점수를 구합니다.
난이도

어려움10점 중 8점

유형
동적 계획법, 비트 연산, 문자열
정답자
아직 제출이 없습니다

문제

새로운 카드 게임을 하고 있다. 두 덱에는 각각 N⋅KN \cdot K장의 카드가 있고, 카드에는 11부터 NN까지의 정수가 적혀 있다. 각 정수는 두 덱 모두에 정확히 KK장씩 들어 있다.

규칙은 간단하다. 두 덱을 섞은 뒤 앞면이 보이도록 놓으면 각 덱의 맨 위 카드가 항상 보인다. 맨 위 카드가 같으면 두 장을 모두 가져가고 1점을 얻는다. 같지 않으면 두 카드 중 하나를 반드시 버려야 한다. 목표는 점수를 최대한 많이 얻는 것이다.

방금 한 라운드를 끝냈다. 두 덱의 배치를 알 때, 얻을 수 있었던 최대 점수를 구하라.

입력

첫 줄에 두 정수 NN과 KK가 주어진다 (1≤N≤1041 \leq N \leq 10^4, 1≤K≤151 \leq K \leq 15). 둘째 줄과 셋째 줄에는 각각 N⋅KN \cdot K개의 정수 xix_i (1≤xi≤N1 \leq x_i \leq N)가 주어지며, 덱의 배치를 나타낸다. x1x_1은 맨 위 카드이고, x2x_2는 그 다음 카드이며, 이런 식으로 이어진다. 어느 줄에서든 같은 정수는 KK번을 넘게 나오지 않는다.

출력

최대 점수를 나타내는 정수 하나를 출력한다.

예제2

  1. 예제 1

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

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