#711. 查找 / find

查找 / find

题目描述

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

  • aia_i +1+11-1
  • 删除集合中 axa_x 之后的元素,x=1+n2x=\lfloor\frac{1+n}{2}\rfloor
  • 删除集合中 axa_x 之前的元素,x=1+n2x=\lfloor\frac{1+n}{2}\rfloor

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

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

输入格式

第一行共三个整数 nnkksumsum
第二行共 nn 个整数,a1a2....an{a_1,a_2,....,a_n}

输出格式

若在经历 kk 次操作后,集合 aa 中是否恰好有一段前后缀序列使得子序列和为 sumsum,前后缀序列指的是存在一个下标 i i 1in1 \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% 的数据,确保 1n1021\le n\le10^21k201\le k\le200sum<1000\le sum<1000ai1030\le a_i\le10^30i=1nai1040\le\sum_{i=1}^{n}a_i\le10^4

对于 50% 的数据,确保 1n1041\le n\le10^41k1031\le k\le10^30sum1060\le sum\le10^60ai1050\le a_i\le10^50i=1nai1080\le\sum_{i=1}^{n}a_i\le10^8

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

对于 100% 的数据,确保 1n31041\le n\le3*10^41k1.51031\le k\le1.5*10^30sum1060\le sum\le10^60ai31050\le a_i\le3*10^50i=1nai1090\le\sum_{i=1}^{n}a_i\le10^9