아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

손상된 파일 복구

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

요약
길이 접두사로 시작하는 블록들이 마지막 위치에서 정확히 끝나도록 수열의 원소를 지우면서, 지운 원소의 가능도 최댓값을 최소화한다.
난이도

보통10점 중 7점

유형
동적 계획법, 이분 탐색, 그리디, 누적 합
정답자
아직 제출이 없습니다

문제

shake! 회사는 각 사용자의 데이터를 양의 정수로 표현한 뒤 데이터 조각으로 바꾸어 이어 붙여 파일에 저장한다. 하나의 데이터 조각은 맨 앞에 조각의 길이를 적고 그 뒤에 데이터를 이루는 수를 적어 만든다. 조각의 길이를 LL이라 하면 조각은 LL 뒤에 L−1L-1개의 수가 오는 형태이며, L=1L=1인 조각은 숫자 11 하나만으로 이루어진다.

3명의 사용자 데이터가 {2,5,5}\{2, 5, 5\}, {1,4,5,1}\{1, 4, 5, 1\}, {2,3,1}\{2, 3, 1\}이면 각 조각은 {4,2,5,5}\{4, 2, 5, 5\}, {5,1,4,5,1}\{5, 1, 4, 5, 1\}, {4,2,3,1}\{4, 2, 3, 1\}이 되고, 이어 붙인 {4,2,5,5,5,1,4,5,1,4,2,3,1}\{4, 2, 5, 5, 5, 1, 4, 5, 1, 4, 2, 3, 1\}이 파일에 저장된다.

손상된 파일에는 원래 파일에 없었어야 할 수들이 추가되었을 수 있다. 각 위치의 수마다 그 수가 원래 파일에도 있었을 가능성을 나타내는 정수가 주어진다. 수를 적당히 지워 올바른 파일로 복구하되, 지운 수들의 가능성의 최댓값이 최소가 되도록 하여라.

입력

첫 줄에 손상된 파일을 이루는 수의 개수 NN이 주어진다. 1≤N≤1000001 \le N \le 100000을 만족한다.

다음 줄에 손상된 파일을 이루는 정수 NN개가 주어진다. 각 수는 11 이상 NN 이하이다.

다음 줄에 각 수가 원래 파일에도 있었을 가능성을 나타내는 정수 NN개가 주어진다. 각 수는 11 이상 100000100000 이하이다.

출력

지운 수들의 가능성의 최댓값을 최소화했을 때의 그 최댓값을 첫 줄에 출력한다.

수를 하나도 지우지 않아도 되면 00을 출력한다.

힌트

남은 수열이 올바른 파일인지는 앞에서부터 확인한다. 맨 앞의 수를 LL이라 하면 그 뒤에 L−1L-1개의 수가 따라와야 하나의 조각이 되며, 다음 조각은 그 바로 뒤에서 시작한다. 마지막 조각까지 정확히 끝나면 올바른 파일이다.

지우는 위치를 고르면 남는 수들의 순서는 그대로 유지되며, 각 조각의 첫 수가 그 조각에 남게 되는 수의 개수와 일치해야 한다.

예제3

  1. 예제 1

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

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

    입력
    15
    5 5 5 5 5 4 4 4 4 3 3 3 2 2 1
    1 2 3 4 5 1 2 3 4 1 2 3 1 2 1
    
    예상 출력
    0