CF1886F Diamond Theft

题目描述

Monocarp 是 Berland 最著名的小偷。这次,他决定偷两颗钻石,但很不幸,有 $n$ 个摄像头监控着这两颗钻石。每个摄像头都有两个参数,$t_i$ 和 $s_i$。第一个参数确定摄像头是否只监控第一颗钻石($t_i=1$),只监控第二颗钻石($t_i=2$)还是两颗钻石都监控($t_i=3$)。第二个参数确定摄像头被黑掉(入侵)后将禁用的秒数。 每秒,Monocarp 可以执行三种操作中的其中一种: - 什么都不做; - 选择一个摄像头并入侵它;如果 Monocarp 入侵第 $i$ 个摄像头,则该摄像头将在接下来的 $s_i$ 秒内被禁用(如果当前秒是第 $T$ 秒,则摄像头将从第 $T+1$ 秒到第 $T+s_i$ 秒(含)被禁用); - 如果监控它的所有摄像头当前都处于禁用状态,那么他可以偷一颗钻石。 如果他还没有偷第一颗钻石,那么他不能偷第二颗钻石。 请注意,Monocarp 可以多次黑掉摄像头,尽管摄像头目前已禁用。 你的任务是确定 Monocarp 偷两颗钻石的最短时间,从第一颗钻石开始,或报告不可能偷走两颗钻石。

输入格式

第一行包含一个整数 $n$ ($0 ≤ n ≤ 1500$),表示监控着这两颗钻石的摄像头数量。 接下来 $n$ 行,第 $i$ 行包含两个整数 $t_i$ 和 $s_i$ ($1 ≤ t_i ≤ 3$;$1 ≤ s_i ≤ 2n$),表示第 $i$ 个摄像头的参数。

输出格式

输出一个整数,即 Monocarp 偷两颗钻石的最短时间。如果无法偷到两颗钻石,则输出 `-1`。