测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A16533. Isla's Memory Thresholds

编程题 省选/NOI-

题目描述

我希望有一天,你能与那个你珍惜的人重逢。

—— Plastic Memories

在 Plastic Memories 的世界中,Isla 正在收集 $n$ 个记忆碎片。第 $i$ 个碎片的大小为 $a_i$,且这些大小是非增序排列的,即 $a_1 \ge a_2 \ge \cdots \ge a_n$。

在回收过程中,Isla 会处理一个范围内的碎片,并将它们的大小存储到缓冲区中。当缓冲区中的总大小达到某个给定的阈值 $x$ 时,会发生溢出:此时记录下一份胶囊,并将缓冲区清空为零。

共有 $q$ 个独立的查询,每个查询由三元组 $(l,r,x)$ 描述。对于每个查询,$x$ 表示 Isla 的记忆容量。然后 Isla 会依次收集第 $l$ 到 $r$ 个记忆碎片。任何时刻,当她当前持有的碎片的总大小不少于 $x$ 时,她会完全清空自己的记忆(不留下任何碎片)。你需要判断 Isla 清空记忆的次数,以及她最终持有的碎片大小之和。

输入格式

每个测试包含多组测试数据。第一行包含测试组数 $t$($1 \le t \le 1000$)。接下来是每组测试数据的描述。

每组测试数据的第一行包含两个整数 $n$ 和 $q$($1 \le n, q \le 150{,}000$)——数组 $a$ 的长度和查询数量。

第二行包含 $n$ 个整数 $a_1,a_2,\ldots,a_n$($1 \le a_i \le 10^9$)——碎片的大小。保证 $a_1 \ge a_2 \ge \cdots \ge a_n$。

接下来 $q$ 行,每行包含三个整数 $l, r, x$($1 \le l \le r \le n$,$1 \le x \le 10^9$),表示一个查询。

保证所有测试数据中 $n$ 的总和不超过 $150{,}000$。

保证所有测试数据中 $q$ 的总和不超过 $150{,}000$。

输出格式

对于每组测试数据中的每个查询,输出两整数——Isla 清空记忆的次数,以及她最终持有的碎片大小之和。

输入输出样例

输入 #1
3
5 4
7 5 5 2 1
1 3 10
2 5 6
1 5 7
3 5 4
6 5
6 6 5 3 2 2
1 6 2
1 6 7
2 6 7
2 5 4
2 5 3
11 7
938412006 792864920 746880066 729862150 704473377 550436315 381392172 326088331 316506801 301443698 190862681
1 3 417253102
9 11 857592497
1 11 344359921
1 7 408760015
8 8 544749974
7 10 361090133
3 11 888178376
输出 #1
1 5
1 3
2 3
1 3
6 0
2 4
2 0
3 0
3 2
3 0
0 808813180
9 0
6 381392172
0 326088331
2 301443698
3 492306379

说明/提示

令 $\texttt{cnt}$ 表示 Isla 清空记忆的次数,$\texttt{sum}$ 表示她当前持有碎片的总大小。

在第一个测试样例的第一个查询 $(l, r, x) = (1, 3, 10)$:

- 从 $\texttt{sum}=0$ 开始;
- 加上 $a_1=7 \Rightarrow \texttt{sum}=7$(仍小于 $10$);
- 加上 $a_2=5 \Rightarrow \texttt{sum}=12 \ge 10 \Rightarrow \texttt{sum} \gets 0$,$\texttt{cnt} \gets 1$;
- 加上 $a_3=5 \Rightarrow \texttt{sum}=5$。

因此,输出 $\texttt{cnt}=1$,$\texttt{sum}=5$。

在第二个测试样例的第五个查询 $(l, r, x) = (2, 5, 3)$:

- 从 $\texttt{sum}=0$ 开始;
- 加上 $a_2=6 \Rightarrow \texttt{sum}=6 \ge 3 \Rightarrow \texttt{sum} \gets 0$,$\texttt{cnt} \gets 1$;
- 加上 $a_3=5 \Rightarrow \texttt{sum}=5 \ge 3 \Rightarrow \texttt{sum} \gets 0$,$\texttt{cnt} \gets 2$;
- 加上 $a_4=3 \Rightarrow \texttt{sum}=3 \ge 3 \Rightarrow \texttt{sum} \gets 0$,$\texttt{cnt} \gets 3$;
- 加上 $a_5=2 \Rightarrow \texttt{sum}=2$(仍小于 $3$);

因此,输出 $\texttt{cnt}=3$,$\texttt{sum}=2$。
上一题 去做题 下一题