题目描述
后厨有 个备餐时段和 道备选菜,第 道菜必须在第 个时段结束前做完才有报酬 ,每个时段只做一道菜。
领班交上来一张排班表: 个数,第 个数表示时段 做的菜的编号, 表示该时段空闲。请核对这张排班表是否既合法又最好:
- 合法:每个编号至多出现一次,且出现的每道菜的时段编号不超过它的 ;
- 最好:排上的菜的报酬总和已经是可能的最大值。
两个条件都满足输出 YES,否则输出 NO。
输入格式
第一行一个整数 。第二行 个整数 。第三行 个整数 。第四行 个整数,即排班表。
输出格式
一行,YES 或 NO。
样例
输入
4 4 2 2 1 10 30 20 40 4 2 0 1
输出
YES
输入
4 4 2 2 1 10 30 20 40 4 3 0 0
输出
NO
样例解释
样例 1:菜 在时段 (不超过上限 )、菜 在时段 (不超过 )、菜 在时段 (不超过 ),合法;报酬 已是最大,YES。样例 2:菜 放时段 、菜 放时段 ,各不超过上限,合法;但报酬 小于最大值 ,不是最好,NO。
数据范围
,,,排班表中每个数在 到 之间。