#P10414. 刷题训练
刷题训练
题目描述
小 Z 最近某场比赛打的很烂,痛定思痛之后,决定刻苦刷题 !
于是小 Z 列出了一份题单,一共有 个题目,第 道题目的难度是 。
假设小 Z 的上限水平是 ,极限情况下,小 Z 能做出难度不超过 的所有题目。
小 Y 知道,如果小 Z 有可能做出所有题目,那么他会非常开心!于是决定使用魔法帮帮他:
小 Y 只能使用给出的 种魔法,但每种魔法可以使用 任意次数 ,具体的,魔法有下面两类:
1 x把第 道题的难度改成任意整数2 x y交换第 道题和第 道题的难度
请问小 Y 能不能通过魔法使得小 Z 有可能做出全部题目?如果可以的话,最少需要使用多少次魔法?
输入格式
从文件 train.in 中读取数据。
输入共 行。
第一行三个正整数 ,代表题目的数量,小 Y 能使用的魔法种类数,和小 Z 现在的上限水平。
接下来一行 个整数,第 个整数 代表第 道题的难度。
接下来 行,每行描述一种魔法,格式为下面两种之一:
1 x表示可以把第 道题的难度改成任意整数2 x y表示可以交换第 道题和第 道题的难度
输出格式
输出到文件 train.out 中。
共一行,如果不能通过魔法使得小 Z 有可能做出全部题目,输出 -1 ;
否则输出一个整数,代表最少需要使用魔法的次数。
3 2 2
0 3 4
1 2
2 2 3
3
数据规模与约定
对于 的数据,
对于另外 的数据,只有第一种类型的魔法(即修改某一道题的难度)
对于另外 的数据,第一种类型的魔法只有一个
对于 的数据,
对于全部数据, $1\le n,k,a_i\le 2\ast 10^6,0\le m \le 2\ast 10^6,1\le x,y\le n$