과제 제출하기
시간 제한1초메모리 제한1024 MB
M개의 문제를 서로 다른 날에 배정하고 각 지식을 언제 공부할지 정해, 모든 문제를 풀 때 필요한 지식이 유효하도록 하면서 공부 횟수를 최소화한다.
문제
성현이가 배우는 과목은 개의 지식을 포함한다. 지식은 1부터 까지의 정수로 나타낼 수 있다.
성현이는 개의 모든 문제를 풀어서 제출해야 한다. 한 문제를 푸는 데는 하루가 걸리고, 성현이는 문제를 푸는 순서를 마음대로 정할 수 있다. 따라서 성현이는 1일, 2일, , 일에 문제를 각각 하나씩 풀어야 한다.
각 문제를 풀기 위해서는 각 문제가 요구하는 지식이 필요하다. 번째 문제를 해결하기 위해서는 번, 번, , 번의 총 개의 지식이 필요하다.
또한 지식은 배운 순간부터 어느 정도의 시간이 지나면 까먹게 되는데, 번 지식은 공부한 날로부터 일이 지나면 까먹게 된다. 즉, 성현이가 번 지식을 일에 공부하면, 일에 성현이는 번 지식을 까먹은 상태가 된다. 그래서 일에 성현이는 지식을 다시 공부해야 할 수도 있다. 성현이는 하루에 여러 개의 지식을 동시에 배울 수도 있다.
성현이는 최소 횟수로 지식을 공부하고 개의 문제를 해결하고 싶다. 성현이가 모든 문제를 해결하기 위해 지식을 공부해야 하는 최소 횟수를 구해보자.
입력
입력은 다음과 같이 주어진다.
첫 줄에 지식의 개수 , 성현이가 풀어야 하는 문제의 수 가 공백으로 구분되어 주어진다.
다음 줄에는 각 지식을 까먹게 되는 시간 가 공백으로 구분되어 주어진다.
이어 줄에 걸쳐 가 주어지고 개의 정수 가 공백으로 구분되어 주어진다.
는 성현이가 번째 문제를 해결하기 위해 필요한 지식의 번호이다.
출력
성현이가 지식을 공부해야 하는 최소 횟수를 출력한다.
제한
- 는 모두 정수이다.
- 모든 에 대해 이다.