首页 > 试题广场 >

小红的点赞(二)

[编程题]小红的点赞(二)
  • 热度指数:91 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
小红发布了n个笔记,每个笔记的点赞数为a_i。小红观察到,每隔一段时间,某个笔记的点赞数就会加 1。但是不会出现一个笔记点赞数连续增加的情况。也就是说,一个笔记赞数加 1 后,下一个加 1 的必然是另一个笔记。
现在小红想知道,对于每一个笔记,其赞数变成所有笔记赞数最多时,此时所有的笔记赞数之和的最小值是多少?

输入描述:
第一行输入一个正整数n,代表笔记的数量。
第二行输入n个正整数a_i,代表每个笔记当前的赞数。
1\leq n \leq 10^5
1\leq a_i \leq 10^9


输出描述:
输出n行,每行输出一个整数,代表第i个笔记变成所有笔记赞数最多时,此时所有的笔记赞数之和的最小值。
特殊的,如果第i个笔记永远无法变成赞数最多,则输出 -1。
示例1

输入

3
3 1 4

输出

9
15
8

说明

对于第一个笔记,当它赞数加 1 时,赞数达到了 4,变成所有笔记赞数最多,此时赞数之和为 4+1+4=9。
对于第二个笔记,可以有以下增长方式:2->1->2->1->2->3->2,此时三个笔记的赞数都是 5,赞数之和为 15。
对于第一个笔记,初始时它的赞数就是最多,此时赞数之和为 3+1+4=8。
头像 丨阿伟丨
发表于 2025-09-15 14:21:08
题目链接 小红的点赞(二) 题目描述 小红有 个笔记,初始点赞数分别为 。 点赞数会随时间增加,规则如下: 每次只有一个笔记的点赞数加 1。 一个笔记的点赞数增加后,下一个获得点赞的必定是另一个不同的笔记。 对于每一个笔记 (从 1 到 ),我们需要计算一个独立的问题:当笔记 的点赞数首次变 展开全文