CF159E Zebra Tower

题目描述

小 Janet 喜欢玩立方体。实际上,只要是多彩的,无论是立方体还是四维超立方体她都喜欢玩。每个立方体由两个参数描述——颜色 $c_{i}$ 和大小 $s_{i}$。一个“斑马塔”是由恰好两种颜色的立方体组成的塔。此外,塔中相邻立方体的颜色必须交替(相邻立方体的颜色不能相同)。斑马塔至少要有两个立方体。除此之外没有其他限制。下图给出了一个斑马塔的例子。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF159E/f33171cfff84c23150eb82e578a37293690a12de.png) 斑马塔的高度是构成塔的所有立方体的大小之和。请帮助小 Janet 用现有的立方体搭建一个高度尽可能大的斑马塔。

输入格式

第一行为整数 $n$($2 \leq n \leq 10^{5}$),表示立方体的数量。接下来 $n$ 行,每行描述一个立方体,包括两个用空格分隔的整数 $c_{i}$ 和 $s_{i}$($1 \leq c_{i}, s_{i} \leq 10^{9}$),分别代表第 $i$ 个立方体的颜色和大小。保证至少有两个不同颜色的立方体。

输出格式

输出斑马塔的最大高度,格式如下: 第一行输出塔的高度; 第二行输出构成塔的立方体的数量; 第三行输出这些立方体的编号(按从下到上的顺序,以空格分隔,编号即为立方体在输入中出现的顺序,从 1 到 $n$)。 如果存在多个高度相同的斑马塔,可以输出其中任意一个。 请不要在 C++ 中使用 %lld 读写 64 位整数。建议使用 cin/cout 流或者 %I64d。

说明/提示

由 ChatGPT 5 翻译