QOJ.ac

QOJ

Time Limit: 1 s Memory Limit: 32 MB Total points: 10

#11665. 俄罗斯方块

Statistics

你可能玩过俄罗斯方块。在这个游戏中,二维方块会垂直落到平台上。方块会一直下落,直到碰到障碍物——即另一个方块或平台。一旦停止,方块就不会再移动。

在原始的俄罗斯方块游戏中,填满的行会消失,但为了简化起见,本题不考虑消除行的情况。此外,假设所有方块都是高度为 1 的水平长条。同时,不允许旋转或移动方块。唯一可以改变的是方块下落的顺序。给定所有方块的长度和水平偏移量,请找到一种方块下落顺序,使得最终形成的图形高度尽可能小。

任务

编写一个程序,完成以下操作:

  • 读取方块的描述;
  • 找到一种方块顺序,使得由这些方块构成的图形高度最小;
  • 将答案输出到标准输出。

输入格式

标准输入的第一行包含一个整数 $n$ ($1 \le n \le 100\,000$),表示即将落到平台上的方块数量。接下来的 $n$ 行,每行包含两个整数 $l_i$ 和 $p_i$ ($1 \le l_i, p_i \le 1\,000\,000\,000$),中间用空格分隔,分别表示第 $i$ 个方块的长度和该方块左侧的水平偏移量。

输出格式

输出的第一行应包含一个整数,表示由给定方块构成的图形的最小可能高度。接下来的 $n$ 行应包含使图形高度最小的方块顺序描述。输出的第 $(i + 1)$ 行应包含一个整数,表示第 $i$ 个下落的方块的编号。方块按输入中出现的顺序从 1 到 $n$ 进行编号。

如果存在多个正确的解决方案,输出其中任意一个即可。

样例

输入

5
4 2
3 1
3 3
4 6
4 5

输出

3
1
4
5
2
3

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.