QOJ.ac

QOJ

Limite de temps : 1.5 s Limite de mémoire : 256 MB Points totaux : 100

#1416. 蛋糕

Statistiques

JOI 君和 IOI 酱是双胞胎兄妹。JOI 君最近迷上了做点心,今天他烤好了一个蛋糕准备吃,但 IOI 酱闻到香味赶来了,于是两人决定分掉这个蛋糕。

蛋糕是圆形的。从某一点开始放射状地切开,将蛋糕分成了 $N$ 个部分,并按逆时针方向将这些部分编号为 $1$ 到 $N$。也就是说,对于 $1 \le i \le N$,第 $i$ 个部分与第 $i-1$ 个部分和第 $i+1$ 个部分相邻(其中第 $0$ 个部分视为第 $N$ 个部分,第 $N+1$ 个部分视为第 $1$ 个部分)。第 $i$ 个部分的大小为 $A_i$,由于切得非常不均匀,所有的 $A_i$ 互不相同。

图 1: 蛋糕示例 ($N = 5, A_1 = 2, A_2 = 8, A_3 = 1, A_4 = 10, A_5 = 9$)

两人决定按以下方式分这 $N$ 个部分:

  • 首先,JOI 君从 $N$ 个部分中选择并拿走 $1$ 个。
  • 之后,从 IOI 酱开始,IOI 酱和 JOI 君轮流从剩下的部分中各拿走 $1$ 个。但是(由于两人都不擅长在不弄碎蛋糕的情况下拿取),他们只能拿走那些“与其相邻的两个部分中至少有一个已经被拿走”的部分。如果存在多个可选的部分,则选择其中最大的一个拿走。

JOI 君想知道,对于每一个部分,如果他最开始选择拿走该部分,那么他最终拿到的所有部分的大小之和是多少。

题目描述

给定蛋糕部分的数量 $N$ 以及每个部分的大小信息,请编写一个程序,计算对于每一个部分,如果 JOI 君最开始选择拿走该部分,他最终拿到的部分大小之和。

输入格式

从标准输入读取以下内容:

  • 第 $1$ 行包含一个整数 $N$,表示蛋糕被分成了 $N$ 个部分。
  • 接下来的 $N$ 行中的第 $i$ 行 ($1 \le i \le N$) 包含一个整数 $A_i$,表示第 $i$ 个部分的大小。

输出格式

向标准输出输出 $N$ 行。第 $i$ 行 ($1 \le i \le N$) 输出一个整数,表示如果最开始拿走第 $i$ 个部分,JOI 君最终拿到的部分大小之和。

数据范围

所有输入数据满足以下条件:

  • $2 \le N \le 300\,000$
  • $1 \le A_i \le 1\,000\,000\,000$ ($1 \le i \le N$)

子任务

子任务 1 [10 分]

  • 满足 $N \le 5\,000$。

子任务 2 [90 分]

  • 没有额外限制。

样例

输入 1

5
2
8
1
10
9

输出 1

13
18
12
13
12

说明

该示例对应题目中的图示。 例如,假设最开始拿走了第 $1$ 个部分。此时:

  • 在剩下的部分中,“相邻部分中至少有一个已被拿走”的部分是第 $2$ 个和第 $5$ 个。由于第 $5$ 个部分更大,所以接下来拿走第 $5$ 个部分。
  • 同样地,接下来比较第 $2$ 个和第 $4$ 个部分,由于第 $4$ 个更大,所以拿走第 $4$ 个部分。
  • 接下来比较第 $2$ 个和第 $3$ 个部分,由于第 $2$ 个更大,所以拿走第 $2$ 个部分。
  • 最后只剩下第 $3$ 个部分,所以拿走第 $3$ 个部分。

即拿取的顺序为: 第 $1$ 个 ($2$) $\to$ 第 $5$ 个 ($9$) $\to$ 第 $4$ 个 ($10$) $\to$ 第 $2$ 个 ($8$) $\to$ 第 $3$ 个 ($1$) (括号内为部分的大小)

由此,JOI 君拿到的部分是第 $1$ 个、第 $4$ 个和第 $3$ 个,大小之和为 $13$,因此第 $1$ 行输出 $13$。对于最开始拿走其他部分的情况,计算方法相同。

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
EditorialOpen Official EditorialQingyu- Download

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.