题目描述
现有一个有 n 个元素的集合 a{a1,a2,a3...an}。
同时对于任意一个 i>j,确保 aj≤ai。
在确保上述性质成立的情况下,可以对集合 a 进行如下操作:
- 令 ai +1 或 −1
- 删除集合中 ax 之后的元素,x=⌊21+n⌋。
- 删除集合中 ax 之前的元素,x=⌊21+n⌋。
在经历 k 次操作后,集合 a 中是否恰好有一段前缀或后缀使和为 sum?
感谢 @lichunhao 提供题面和数据
输入格式
第一行共三个整数 n,k,sum。
第二行共 n 个整数,a1,a2,....,an。
输出格式
若在经历 k 次操作后,集合 a 中是否恰好有一段前后缀序列使得子序列和为 sum,前后缀序列指的是存在一个下标 i(1≤i≤n),原序列中 a1,a2,a3...ai 或者 ai,ai+1,ai+2...an,则输出Yes,反之输出No。
输入输出样例
7 3 8
1 2 3 4 5 6 7
Yes
1 2 24
15
No
说明/提示
对于 30% 的数据,确保 1≤n≤102,1≤k≤20,0≤sum<100,0≤ai≤103,0≤∑i=1nai≤104。
对于 50% 的数据,确保 1≤n≤104,1≤k≤103,0≤sum≤106,0≤ai≤105,0≤∑i=1nai≤108。
对于 80% 的数据,确保 0≤∑i=1nai≤108。
对于 100% 的数据,确保 1≤n≤3∗104,1≤k≤1.5∗103,0≤sum≤106,0≤ai≤3∗105,0≤∑i=1nai≤109。