소가 길을 건너간 이유 11

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

어려움8동적 계획법분할 정복정렬세그먼트 트리아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

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

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

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

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

입력

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

출력

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