만드는 중입니다

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

소가 길을 건너간 이유 11

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

요약
길 양쪽에 각각 한 번씩 나오는 품종 순열이 주어질 때, 번호 차가 4 이하인 쌍을 서로 교차하지 않게 최대한 많이 연결하는 문제입니다.
난이도

어려움10점 중 8점

유형
동적 계획법, 분할 정복, 정렬, 세그먼트 트리
정답자
아직 제출이 없습니다

문제

존의 고민을 해결할 방법을 찾아 알려 주러 가던 우리는 길을 잃고 말았다. 도착한 곳도 존의 농장이긴 했지만, 목초지 2N2N개는 없고 웬 N×NN \times N 격자가 있었다. 알고 보니 동명이인의 농장이었다. 그 사이에 우리가 도와주려던 존은 자기 코드를 아무리 디버깅해도 틀렸다는 판정이나 런타임 에러가 나자 포기하고 두 번째 방안을 시도하고 있다.

존은 최근에 일부 종끼리 친하다는 사실을 알게 되었다. 존의 농장에는 1번 종, 2번 종, ..., NN번 종까지 NN 종류의 소가 있다. ∣a−b∣≤4|a-b| \le 4이면 aa번 종과 bb번 종의 소는 친하고, 그렇지 않으면 사이가 나쁘다.

존 도와주기 협회에 새로 가입한 사람들을 위해 농장의 구조를 다시 설명한다. 농장에는 곧은 길이 하나 있고, 길 양쪽에 목초지가 NN개씩 있다. 왼쪽 목초지에는 각 종의 소가 한 목초지씩 차지하고 있고, 오른쪽도 마찬가지이다. 존은 교통사고를 막으려고 횡단보도를 설치하려 한다. 각 횡단보도는 왼쪽 목초지 하나와 오른쪽 목초지 하나를 이어야 하며, 길에 수직일 필요는 없다. 물론 사이가 좋은 소끼리만 연결해야 한다. 각 목초지에는 횡단보도가 최대 한 개만 있어야 하고, 횡단보도끼리 서로 교차하면 안 된다.

조건을 지키면서 횡단보도를 최대한 많이 설치하도록 존을 도와주자.

입력

첫째 줄에 NN (1≤N≤100 0001 \le N \le 100\,000)이 주어진다. 다음 NN개의 줄에는 길 왼쪽의 목초지에 있는 소의 종 번호가 순서대로 한 줄에 하나씩 주어진다. 각 종은 정확히 한 번씩 나타난다. 그다음 NN개의 줄에는 길 오른쪽의 목초지가 같은 방식으로 주어진다.

출력

조건을 만족하도록 설치할 수 있는 횡단보도의 최대 개수를 출력한다.

예제1

  1. 예제 1

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