#abc472c. On a Diet

    ID: 4391 Type: Default 1000ms 256MiB Tried: 0 Accepted: 0 Difficulty: 3 Uploaded By: Tags>普及/提高-滑动窗口前缀和模拟

On a Diet

题目描述

高橋君回老家住 NN 天。

老家每天都会准备点心,第 ii 天的点心热量是 AiA_i

为了控制体重,高橋君遵循这样的原则:只要最近 MM里已吃点心的热量总和不超过 KK,他就把今天的点心吃掉。

具体地,他按 i=1,2,,Ni = 1, 2, \ldots, N 的顺序,依照下面的规则决定第 ii 天吃不吃:

  • 假设他吃了第 ii 天的点心,如果从第 max(iM+1,1)\max(i-M+1, 1) 天到第 ii 天之间他实际吃掉的点心热量总和不超过 KK,那么他就真的吃第 ii 天的点心;否则就不吃。

请对每个 i=1,2,,Ni = 1, 2, \ldots, N,判断高橋君第 ii 天吃不吃点心。

输入格式

N M K
A_1 A_2 ... A_N

输出格式

输出 NN 行。第 ii 行在高橋君第 ii 天吃点心时输出 Yes,不吃时输出 No

输入示例 1

5 3 83
48 73 59 90 21

输出示例 1

Yes
No
No
No
Yes

示例 1 说明

每一天「假设吃掉今天的点心」之后,最近 33 天里已吃热量的总和分别是:

  • 11 天:4848
  • 22 天:48+73=12148+73=121
  • 33 天:48+59=10748+59=107
  • 44 天:9090
  • 55 天:2121

注意第 33 天的窗口是第 131 \sim 3 天,其中第 22没吃,所以只累加了第 11 天的 4848。这正是本题的关键:窗口里累加的是实际吃掉的热量,不是所有点心的热量。

输入示例 2

7 4 728
187 816 349 609 255 308 175

输出示例 2

Yes
No
Yes
No
Yes
No
Yes

示例 2 说明

这组数据里 YesNo 严格交替。第 22 天因为 A2=816>KA_2 = 816 > K单独一份就超标,所以无论窗口里有没有别的东西都吃不了。可以用它检验「只要 Ai>KA_i > K 就必然输出 No」这条边界。

输入示例 3

10 3 1368290936
216519459 804733999 297250023 775422599 287963235 999315644 354987425 974810607 653940822 117157941

输出示例 3

Yes
Yes
Yes
No
Yes
Yes
No
No
Yes
Yes

示例 3 说明

KK 超过了 10910^9,而 AiA_i 也接近 10910^9,窗口和很容易超过 3232 位整数范围。本组数据用来检验是否使用了 long long:用 int 会因为溢出得到完全不同的一串答案。

约束条件

  • 1MN2×1051 \le M \le N \le 2 \times 10^5
  • 1K10151 \le K \le 10^{15}
  • 1Ai1091 \le A_i \le 10^9
  • 所有输入值均为整数