CF1148D Dirty Deeds Done Dirt Cheap

题目描述

有 $n$ 个整数对 $(a_1, b_1), (a_2, b_2), \cdots, (a_n, b_n)$. 保证 $a_1, b_1, a_2, b_2, \cdots, a_n, b_n$ 两两不相等, 并且均在区间 $[1, 2 \cdot n]$ 内. 好序列的定义: 对于一个序列 $x_1, x_2, \cdots, x_{2k}$, 满足 - $x_1 < x_2 > x_3 < \cdots < x_{2k - 2} > x_{2k - 1} < x_{2k}$ 或 - $x_1 > x_2 < x_3 > \cdots > x_{2k - 2} < x_{2k - 1} > x_{2k}$. 求一个序列 $i_1, i_2, \cdots, i_t$ 满足 $a_{i_1}, b_{i_1}, a_{i_2}, b_{i_2}, \cdots, a_{i_t}, b_{i_t}$ 是好序列. 输出 $t$ 的最大值以及对应的序列 $i_1, i_2, \cdots, i_t$.

输入格式

第一行包含一个整数 $n$, 即数对的个数. 后面 $n$ 行为数对, 每行包含一个数对 $(a_i, b_i)$.

输出格式

第一行输出 $t$, 即所求序列长度. 接着输出满足题意的序列 $i_1, i_2, \cdots, i_t$.

说明/提示

$2 \leq n \leq 3 \cdot 10^5$ $1 \leq a_i, b_i \leq 2 \cdot n$ 并且所有 $a_i, b_i$ 两两不相等. ### 样例解释 样例 1: $1 < 7 > 3 < 5 > 2 < 10$. 样例 2: $6 > 1 < 3 > 2 < 5 > 4$.