TopCoder

Caido
$\mathbb{W}\mathcal{aimai}\sim$

User's AC Ratio

80.0% (16/20)

Submission's AC Ratio

39.1% (52/133)

Tags

Description

Siruseri 政府建造了一座新的會議中心。
許多公司對租借會議中心的會堂很感興趣,他們希望能夠在裏面舉行會議。
對於一個客戶而言,僅當在開會時能夠獨自佔用整個會堂,他才會租借會堂。
會議中心的銷售主管認為:最好的策略應該是將會堂租借給盡可能多的客戶。
顯然,有可能存在不止一種滿足要求的策略。
例如下面的例子。總共有 4 個公司。
他們對租借會堂發出了請求,並提出了他們所需佔用會堂的起止日期(如下表所示)。

開始日期結束日期
公司 149
公司 2911
公司 31319
公司 41017

上例中,最多將會堂租借給兩家公司。
租借策略分別是租給公司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的前綴,或者對於l1l2的第一個不同位置j,l1[j]<l2[j],則l1比l2小。

Input Format

輸入的第一行有一個整數 N,表示發出租借會堂申請的公司的個數。
第 2 到第 N+1 行每行有 2 個整數。
第 i+1 行的整數表示第 i 家公司申請租借的起始和終止日期。
對於每個公司的申請,起始日期為不小於 1 的整數,終止日期為不大於109的整數。

對於 50%的輸入,N≤3000。在所有輸入中,N≤200000

Output Format

輸出的第一行應有一個整數 M,表示最多可以租借給多少家公司。
第二行應列出 M 個數,表示最終將會堂租借給哪些公司。

Sample Input 1

4
4 9
9 11
13 19
10 17

Sample Output 1

2
1 3

Hints

Problem Source

原TIOJ1743 / APIO '09

Subtasks

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

Testdata and Limits

No. Time Limit (ms) Memory Limit (VSS, KiB) Output Limit (KiB) Subtasks
0 1000 65536 262144 1
1 1000 65536 262144 2
2 1000 65536 262144 3
3 1000 65536 262144 4
4 1000 65536 262144 5
5 1000 65536 262144 6
6 1000 65536 262144 7
7 1000 65536 262144 8
8 1000 65536 262144 9
9 1000 65536 262144 10
10 1000 65536 262144 11
11 1000 65536 262144 12
12 1000 65536 262144 13
13 1000 65536 262144 14
14 1000 65536 262144 15
15 1000 65536 262144 16
16 1000 65536 262144 17
17 1000 65536 262144 18
18 1000 65536 262144 19
19 1000 65536 262144 20
20 1000 65536 262144 21
21 1000 65536 262144 22
22 1000 65536 262144 23