QOJ.ac

QOJ

時間限制: 4 s 記憶體限制: 2048 MB 總分: 100

#9816. 流动的喷泉

统计

上周,Bill 第一次装满了一个香槟喷泉。看着香槟从一个杯子流向另一个杯子,他感到非常高兴,于是决定为下一届世界总决赛组织一个更大的香槟喷泉。他已经订购了 $n$ 个容量各不相同的玻璃碗,并将它们堆叠在一起,形成一个巨大的玻璃喷泉。然而,他仍然不确定如何将香槟倒入喷泉中。一瓶香槟是不够的,而且仅仅从顶部倒入可能无法填满每一个碗。Bill 想要尝试不同的方式来填满喷泉,但浪费任何香槟都是一种遗憾。

图 F.1:样例输入 2 的示意图。第 $i$ 幅图像展示了第 $i$ 个类型为 '+' 的查询。

现在是你大显身手的时候了!你的任务是编写一个程序,模拟将香槟倒入给定喷泉的过程。通过这个程序,Bill 现在可以模拟向不同的层倒入一定量的香槟。如果某一层中的碗已经装满,那么香槟会溢出到下方第一个容量更大的层中。如果下一个更大的层也满了,香槟会进一步溢出,直到最终渗入地面,从而浪费掉这些好酒。此外,Bill 还想在模拟过程中的某些时刻了解某一层当前有多少香槟。

输入格式

输入包含: 一行,包含两个整数 $n$ 和 $q$ ($1 \le n, q \le 3 \cdot 10^5$),表示层数和查询次数。 一行,包含 $n$ 个不同的整数 $c$ ($1 \le c \le 10^9$),表示每一层的容量(单位为升)。这些层按从上到下的顺序给出。 $q$ 行,每行描述一个查询。第一个符号 $t$ ($t \in \{'+', '?'\}$) 描述查询的类型。该行其余部分的格式取决于 $t$: $t = '+'$:后跟两个整数 $\ell$ 和 $x$ ($1 \le \ell \le n, 1 \le x \le 10^9$),表示 Bill 想要向第 $\ell$ 层倒入 $x$ 升香槟。 * $t = '?'$:后跟一个整数 $\ell$ ($1 \le \ell \le n$),表示 Bill 请求查询第 $\ell$ 层当前含有的香槟量(单位为升)。

保证至少有一个类型为 '?' 的查询。

输出格式

对于每个类型为 '?' 的查询,输出请求层中当前的香槟量(单位为升)。

样例

样例输入 1

4 4
1 2 3 4
+ 1 6
? 4
+ 1 6
? 4

样例输出 1

0
4

样例输入 2

4 8
2 4 3 5
+ 1 4
? 2
+ 2 3
? 4
+ 3 4
? 4
+ 2 10
? 4

样例输出 2

2
1
2
5

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.