atcoder#ARC106C. [ARC106C] Solutions
[ARC106C] Solutions
题目描述
つの区間 について, かつ であるとき, この つの区間が交わると定義します。
以下の問題 を考えます。
入力: 個の区間 $ L_1,\ L_2,\ \cdots,\ L_N,\ R_1,\ R_2,\ \cdots,\ R_N $は全て異なる。 出力: どの つの区間も交わらないように選べる区間の最大数
高橋君は、以下のように動作するプログラムを実装しました。
の値が昇順となるように, 入力された区間を $ [L_{p_1}:R_{p_1}],\ [L_{p_2}:R_{p_2}],\ \cdots\ ,\ [L_{p_N}:R_{p_N}] $ と並び替える。 について、以下を行う。 これまでに選んだどの区間とも交わらないならば、 を選ぶ。 選んだ区間の数を出力する。
一方、青木君は、以下のように動作するプログラムを実装しました。
の値が昇順となるように, 入力された区間を $ [L_{p_1}:R_{p_1}],\ [L_{p_2}:R_{p_2}],\ \cdots\ ,\ [L_{p_N}:R_{p_N}] $ と並び替える。 について、以下を行う。 これまでに選んだどの区間とも交わらないならば、 を選ぶ。 選んだ区間の数を出力する。
整数 が与えられます。 個の区間から成る問題 の入力であって、
(高橋君のプログラムが出力する値)\ -\ (青木君のプログラムが出力する値)\ =\ M $$
となるものを構築してください。
输入格式
入力は以下の形式で標準入力から与えられる。
输出格式
条件を満たす 個の区間が存在しない場合は -1
と出力せよ。
存在する場合は、 以下のように 行出力せよ。
ただし, は以下の条件を満たさなければならない。
- ()
- ()
- は整数 (21:46 追記)
答えが複数存在する場合は、どれを出力しても構わない。
出力の最後には必ず改行を行うこと。
题目大意
对于两个区间 ,,如果 且 ,则定义这两个区间相交。
考虑以下问题 。
有 个区间 ,⋯, ,这 个整数互不相同,选择最多的区间,使它们互不相交。
的算法:对所有区间按 升序排列后,依次考虑 ,如果排名为 的区间和目前已经选择的区间都不相交,则选择第 个区间。
的算法:对所有区间按 升序排列后,依次考虑 ,如果排名为 的区间和目前已经选择的区间都不相交,则选择第 个区间。
给定整数 和 。请你构造出 个区间,使得 的答案 的答案 。
无解输出 。
5 1
1 10
8 12
13 20
11 14
2 4
10 -10
-1
提示
制約
- 入力は全て整数
Sample Explanation 1
つの区間を順に区間 、区間 、 、区間 と名付けます。 高橋君のプログラムは以下のように動作します。 > 区間を区間 、区間 、区間 、区間 、区間 と並び替えます。 区間 を選びます。 区間 は選びません。(区間 と交わっている為) 区間 を選びます。 区間 は選びません。 (区間 と交わっている為) 区間 を選びます。 以上より、高橋君のプログラムが出力する値は となります。 青木君のプログラムは以下のように動作します。 > 区間を区間 、区間 、区間 、区間 、区間 と並び替えます。 区間 を選びます。 区間 は選びません。(区間 と交わっている為) 区間 は選びません。 (区間 と交わっている為) 区間 を選びます。 区間 は選びません。 (区間 と交わっている為) 以上より、青木君のプログラムが出力する値は となります。 このとき、 であり、この つの区間は条件を満たします。