QOJ.ac

QOJ

Limite de temps : 3.0 s Limite de mémoire : 512 MB Points totaux : 100 Hackable ✓

#9252. 冰箱里的企鹅

Statistiques

有 $n$ 只企鹅,第 $i$ 只企鹅的宽度为 $w_i$。它们按照排列 $p_i$ 指定的顺序进入冰箱:第 $p_i$ 只企鹅在第 $i$ 个位置进入冰箱。

冰箱的宽度为 $W$,深度视为无限。在所有企鹅进入冰箱后,如果相邻企鹅的宽度之和不超过 $W$,它们就可以交换位置。一只企鹅可以多次交换位置。

计算从冰箱中出来的不同出队顺序的数量,以及所有可能的出队顺序中字典序最小的顺序。

冰箱只有一个门,采用“后进先出”(LIFO)结构,这意味着企鹅将按照它们进入顺序的逆序离开。

输入格式

第一行包含两个正整数 $n$ 和 $W$ ($1 \le n \le 10^6$, $1 \le W \le 10^9$),分别表示企鹅的数量和冰箱的宽度。

第二行包含一个长度为 $n$ 的排列,记为 $p_i$ ($1 \le p_i \le n$),表示企鹅进入冰箱的顺序。

第三行包含 $n$ 个正整数 $w_i$ ($1 \le w_i \le W$),分别表示编号为 $i$ 的企鹅的宽度。

保证 $p_i$ 是 $\{1, 2, \dots, n\}$ 的一个排列。

输出格式

第一行输出一个整数,表示企鹅离开冰箱的不同顺序数量,对 $10^9 + 7$ 取模。

第二行输出一个长度为 $n$ 的排列,表示所有可能的出队顺序中字典序最小的顺序。

样例

输入 1

5 10
1 2 3 4 5
6 5 3 9 2

输出 1

3
5 4 2 1 3

输入 2

5 10
1 2 3 4 5
2 4 3 3 8

输出 2

30
1 5 2 3 4

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.