CF732D Exams
题目描述
Vasiliy 有一个持续 $n$ 天的考试周期。他需要通过 $m$ 门科目的考试。科目编号从 $1$ 到 $m$。
关于每一天,我们知道当天可以通过 $m$ 门科目中的哪一门的考试。也有可能某天不能通过任何考试。一天最多只能通过一门科目的考试。
在每一天,Vasiliy 可以选择通过当天的考试(这会花掉整天时间),或者整天为某个考试做准备,或者休息。
对于每门科目,Vasiliy 已知 $a_{i}$——他通过编号为 $i$ 的考试前需要准备的天数。Vasiliy 可以在备考期间切换备考科目,不必连续为考试 $i$ 准备 $a_{i}$ 天,可以以任何顺序交替准备各个科目的考试。
你的任务是确定 Vailiy 至少需要多少天能够通过全部的考试,如果无法通过,请输出 $-1$。每门考试必须且仅能通过一次。
输入格式
第一行包含两个整数 $n$ 和 $m$($1 \leq n, m \leq 10^{5}$),表示考试周期的天数和科目的数量。
第二行包含 $n$ 个整数 $d_{1},d_{2},...,d_{n}$($0 \leq d_{i} \leq m$),其中 $d_{i}$ 表示第 $i$ 天可以通过编号为 $d_{i}$ 的那门科目的考试。如果 $d_{i}=0$,表示这一天不能通过任何考试。
第三行包含 $m$ 个正整数 $a_{1},a_{2},...,a_{m}$($1 \leq a_{i} \leq 10^{5}$),其中 $a_{i}$ 表示通过科目 $i$ 的考试之前需要准备的天数。
输出格式
输出一个整数,表示 Vasiliy 通过所有考试所需的最少天数。如果不可能通过所有考试,输出 $-1$。
说明/提示
在第一个样例中,Vasiliy 可以这样安排:第 1 天和第 2 天为第 1 门科目备考,第 5 天通过第 1 门科目考试,第 3 天为第 2 门科目备考,第 4 天通过第 2 门科目考试。
在第二个样例中,Vasiliy 应该在前 4 天为第 3 门科目备考,第 5 天通过第 3 门科目考试。第 6 天为第 2 门科目备考,第 7 天通过第 2 门科目考试。第 8 天为第 1 门科目备考,第 9 天通过第 1 门科目考试。
在第三个样例中,Vasiliy 无法通过唯一的一门考试,因为他没有足够的时间去备考。
由 ChatGPT 5 翻译