Siruseri 政府建造了一座新的會議中心。
許多公司對租借會議中心的會堂很感興趣,他們希望能夠在裏面舉行會議。
對於一個客戶而言,僅當在開會時能夠獨自佔用整個會堂,他才會租借會堂。
會議中心的銷售主管認為:最好的策略應該是將會堂租借給盡可能多的客戶。
顯然,有可能存在不止一種滿足要求的策略。
例如下面的例子。總共有 4 個公司。
他們對租借會堂發出了請求,並提出了他們所需佔用會堂的起止日期(如下表所示)。
開始日期 | 結束日期 | |
公司 1 | 4 | 9 |
公司 2 | 9 | 11 |
公司 3 | 13 | 19 |
公司 4 | 10 | 17 |
上例中,最多將會堂租借給兩家公司。
租借策略分別是租給公司1和公司3,或是公司2和公司3,也可以是公司1和公司4。
注意會議中心一天最多租借給一個公司,所以公司1和公司2不能同時租借會議中心,因為他們在第九天重合了。
銷售主管為了公平起見,決定按照如下的程式來確定選擇何種租借策略:
首先,將租借給客戶數量最多的策略作為候選,將所有的公司按照他們發出請求的順序編號。
對於候選策略,將策略中的每家公司的編號按昇冪排列。
最後,選出其中字典序最小1的候選策略作為最終的策略。
例中,會堂最終將被租借給公司1和公司3:
三個候選策略是{(1,3),(2,3),(1,4)}。而在字典序中(1,3)<(1,4)<(2,3)。
你的任務是幫助銷售主管確定應該將會堂租借給哪些公司。
1字典序指在字典中排列的順序,如果序列l1是序列l2的前綴,或者對於l1和l2的第一個不同位置j,l1[j]<l2[j],則l1比l2小。
輸入的第一行有一個整數 N,表示發出租借會堂申請的公司的個數。
第 2 到第 N+1 行每行有 2 個整數。
第 i+1 行的整數表示第 i 家公司申請租借的起始和終止日期。
對於每個公司的申請,起始日期為不小於 1 的整數,終止日期為不大於109的整數。
對於 50%的輸入,N≤3000。在所有輸入中,N≤200000
輸出的第一行應有一個整數 M,表示最多可以租借給多少家公司。
第二行應列出 M 個數,表示最終將會堂租借給哪些公司。
原TIOJ1743 / APIO '09
No. | Testdata Range | Score |
---|---|---|
1 | 0 | 4 |
2 | 1 | 4 |
3 | 2 | 4 |
4 | 3 | 4 |
5 | 4 | 4 |
6 | 5 | 4 |
7 | 6 | 4 |
8 | 7 | 4 |
9 | 8 | 4 |
10 | 9 | 4 |
11 | 10 | 4 |
12 | 11 | 4 |
13 | 12 | 4 |
14 | 13 | 4 |
15 | 14 | 4 |
16 | 15 | 4 |
17 | 16 | 4 |
18 | 17 | 4 |
19 | 18 | 4 |
20 | 19 | 4 |
21 | 20 | 4 |
22 | 21 | 4 |
23 | 22 | 12 |