QOJ.ac

QOJ

時間限制: 1 s 記憶體限制: 1024 MB 總分: 100 可 Hack ✓

#14076. Lockout

统计

马里奥世界

马里奥(Mario)和路易吉(Luigi)正在进行《超级马里奥:奥德赛》的速通比赛,以决定谁是更优秀的速通选手。在《超级马里奥:奥德赛》中,一共有 $N$ 个世界,其中世界 $i$ 含有 $a_i$ 个金币,且需要花费 $t_i$ 秒来通关。如果马里奥或路易吉中有人率先进入某个世界,他将收集该世界中的全部 $a_i$ 个金币,不给另一人留下任何金币。如果马里奥和路易吉在同一时间进入同一个世界,则两人各有 $50\%$ 的概率获得该世界的全部金币(换句话说,马里奥有 $50\%$ 的概率获得全部金币,路易吉也是如此)。注意,在任何时刻,两位玩家都不知道哪些世界还剩有金币。一旦他们进入一个世界,无论该世界是否还留有金币,他们都必须花费 $t_i$ 秒将其通关。

幸运的是,路易吉的计划泄露了,他将要进入的世界顺序已为马里奥所知。也就是说,路易吉将从他列表中的第一个世界开始,然后移动到下一个世界,依此类推。得知此事后,马里奥请求你帮助他确定进入世界的最佳顺序。请确定一个进入世界的排列,以最大化他击败路易吉的概率。如果马里奥获得的金币数严格大于路易吉,则马里奥获胜。

输入格式

输入的第一行包含一个整数 $N$ ($1 \le N \le 100,000$),表示世界的数量。

第二行包含 $N$ 个空格分隔的整数 $a_1, a_2, \dots, a_N$ ($1 \le a_i \le 10^9$),表示每个世界中的金币数量。

第三行包含 $N$ 个空格分隔的整数 $t_1, t_2, \dots, t_N$ ($1 \le t_i \le 10^9$),表示通关每个世界所需的时间。

第四行包含 $N$ 个空格分隔的整数 $p_1, p_2, \dots, p_N$ ($1 \le p_i \le N$),表示路易吉探索世界的顺序:路易吉将首先探索世界 $p_1$,然后是世界 $p_2$,依此类推。保证 $p$ 是 $1$ 到 $N$ 的一个排列。

输出格式

输出第一行包含一个双精度浮点数 $r$,表示马里奥获胜的最大概率。该概率与真实值之间的绝对误差不应超过 $10^{-5}$。

第二行输出 $N$ 个空格分隔的整数,表示最佳的排列。如果有多个正确的排列,输出其中任意一个即可。

样例

输入样例 1

3
10 10 10
2 3 1
1 2 3

输出样例 1

1
3 2 1

输入样例 2

1
10
5
1

输出样例 2

0.5
1

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.