#711. 查找 / find

查找 / find

题目描述

现有一个有 nn 个元素的集合 aa{a1,a2,a3...ana_1,a_2,a_3...a_n}。
同时对于任意一个 i>ji>j,确保 aj≤aia_j \le a_i。
在确保上述性质成立的情况下,可以对集合 aa 进行如下操作:

  • 令 aia_i +1+1 或 −1-1
  • 删除集合中 axa_x 之后的元素,x=⌊1+n2⌋x=\lfloor\frac{1+n}{2}\rfloor。
  • 删除集合中 axa_x 之前的元素,x=⌊1+n2⌋x=\lfloor\frac{1+n}{2}\rfloor。

在经历 kk 次操作后,集合 aa 中是否恰好有一段前缀或后缀使和为 sumsum?

感谢 @lichunhao@lichunhao 提供题面和数据

输入格式

第一行共三个整数 nn,kk,sumsum。
第二行共 nn 个整数,a1,a2,....,an{a_1,a_2,....,a_n}。

输出格式

若在经历 kk 次操作后,集合 aa 中是否恰好有一段前后缀序列使得子序列和为 sumsum,前后缀序列指的是存在一个下标 i i (1≤i≤n1 \le i \le n),原序列中 a1,a2,a3...aia_1,a_2,a_3...a_i 或者 ai,ai+1,ai+2...ana_i,a_{i+1},a_{i+2}...a_n,则输出Yes,反之输出No。

输入输出样例

7 3 8
1 2 3 4 5 6 7
Yes
1 2 24
15
No

说明/提示

对于 30% 的数据,确保 1≤n≤1021\le n\le10^2,1≤k≤201\le k\le20,0≤sum<1000\le sum<100,0≤ai≤1030\le a_i\le10^3,0≤∑i=1nai≤1040\le\sum_{i=1}^{n}a_i\le10^4。

对于 50% 的数据,确保 1≤n≤1041\le n\le10^4,1≤k≤1031\le k\le10^3,0≤sum≤1060\le sum\le10^6,0≤ai≤1050\le a_i\le10^5,0≤∑i=1nai≤1080\le\sum_{i=1}^{n}a_i\le10^8。

对于 80% 的数据,确保 0≤∑i=1nai≤1080\le\sum_{i=1}^{n}a_i\le10^8。

对于 100% 的数据,确保 1≤n≤3∗1041\le n\le3*10^4,1≤k≤1.5∗1031\le k\le1.5*10^3,0≤sum≤1060\le sum\le10^6,0≤ai≤3∗1050\le a_i\le3*10^5,0≤∑i=1nai≤1090\le\sum_{i=1}^{n}a_i\le10^9。