만드는 중입니다

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

맛집 가이드

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

요약
두 평론가의 순위가 주어질 때, 별점이 높은 식당이 두 순위 모두에서 위에 오도록 각 등급에 K개 이상씩 나누는 최대 등급 수를 구합니다.
난이도

보통10점 중 7점

유형
동적 계획법, 그리디, 정렬
정답자
아직 제출이 없습니다

문제

윤이는 UNIST 주변 음식점을 소개하는 가이드 앱 "UNIST 가이드"를 만들려고 한다. 윤이는 근처 음식점 중 NN개를 추천하기로 하고, 음식점에 11번부터 NN번까지 번호를 붙였다.

윤이는 음식점 정보를 조사하다가 음식 평론가 동규와 원이가 각각 NN개의 음식점에 순위를 매긴 자료를 찾았다. 윤이는 이 두 순위표를 바탕으로 음식점 등급을 매기려고 한다. 등급은 양의 정수 SS에 대해 11 이상 SS 이하의 정수 별점으로 나타낸다. 별점이 높을수록 맛있는 음식점이다.

음식점 등급은 두 평론가의 순위표에 어긋나지 않아야 한다. 즉, 음식점 X의 등급이 음식점 Y보다 높다면, 두 평론가의 순위표에서 모두 X의 순위가 Y보다 높아야 한다. 그 역은 성립하지 않아도 된다.

또한 각 등급에는 그 등급을 받은 음식점이 적어도 KK개 있어야 한다.

윤이는 음식점 정보가 구체적일수록 가이드의 신뢰도가 올라간다고 보고, 등급을 최대한 세분화하려고 한다. 즉, 최고 별점 SS가 최대한 커지도록 등급을 매기려고 한다. 조건을 만족하도록 등급을 매겼을 때, 등급의 개수는 최대 얼마인가?

입력

첫 번째 줄에 음식점의 개수 NN과 등급별 최소 음식점 개수 KK가 공백으로 구분되어 주어진다. (1≤K≤N≤200 0001\le K\le N\le 200\ 000)

두 번째 줄에 평론가 동규가 평가한 순위가 높은 순서대로 NN개의 음식점 번호가 공백으로 주어진다.

세 번째 줄에 평론가 원이가 평가한 순위가 높은 순서대로 NN개의 음식점 번호가 공백으로 주어진다.

음식점 번호는 11 이상 NN 이하의 정수이며, 각 줄 안에서 중복되지 않는다.

출력

윤이가 등급을 최대한 세분화하도록 매겼을 때, 등급의 개수를 출력한다.

예제2

  1. 예제 1

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

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