#P2168. Joke with Turtles

Joke with Turtles

题目描述

有一个著名的儿童谜语笑话: 三只乌龟在一条路上爬行。一只乌龟说:“我前面有两只乌龟。” 另一只乌龟说:“我后面有两只乌龟。” 第三只乌龟说:“我前面有两只乌龟,后面也有两只乌龟。” 这是怎么回事呢? 答案是 —— 第三只乌龟在说谎! 现在的问题是:有 nn 只乌龟在一条路上爬行。其中一些乌龟在同一位置爬行,因此它们看不到同组乌龟的前方或后方。每只乌龟做出形如 “我前面有 aia_i 只乌龟,后面有 bib_i 只乌龟” 的陈述。你的任务是找出必须说谎的乌龟的最小数量。 我们将问题形式化:乌龟 ii 的坐标为 xix_i(可能有多个乌龟坐标相同)。当且仅当 aia_i 等于坐标 xj>xix_j > x_i 的乌龟数量,且 bib_i 等于坐标 xj<xix_j < x_i 的乌龟数量时,乌龟 ii 说真话,否则它在说谎。

输入

第一行输入整数 n1n1000n(1 ≤ n ≤ 1000)。接下来 nn 行,每行包含两个数 aia_ibi0ai,bi1000b_i(0 ≤ ai, bi ≤ 1000),描述第 ii 只乌龟(ii11nn)的陈述。

输出

第一行输出整数 m—— 必须说谎的乌龟的最小数量, followed by m 个整数 —— 说谎的乌龟的编号(顺序任意)。若存在多个解集,输出任意一个即可。

输入数据 1

5

0 2

0 3

2 1

1 2

4 0

输出数据 1

2 1 4

来源

Northeastern Europe 2004