#abc475c. Walk the Line

Walk the Line

题目描述

NN 个城镇排列在一条直线上,编号为 1,2,,N1, 2, \ldots, N。对每个满足 1iN11 \le i \le N-1 的整数 ii,城镇 ii 与城镇 i+1i+1 之间有一条长度为 AiA_i 的道路相连。

你最初位于城镇 SS。你可以反复地沿着道路在相连的两个城镇之间移动。

在移动距离的总和不超过 LL 的前提下,请求出一连串移动中访问过的城镇数量的最大值。其中城镇 SS 也算作访问过,同一个城镇访问多次只计 11 次。

输入格式

N S L
A_1 A_2 ... A_{N-1}

输出格式

输出答案。

输入示例 1

6 3 10
5 2 4 1 6

输出示例 1

4

示例 1 说明

最初位于城镇 33。按 323453 \to 2 \to 3 \to 4 \to 5 的顺序移动,总距离为 2+2+4+1=92+2+4+1=9,访问过的城镇是 2,3,4,52,3,4,544 个。

在总距离不超过 1010 的前提下无法访问 55 个及以上的城镇,所以答案是 44

注意为了从左侧折返到右侧,中间那段路被走了两次323 \to 2232 \to 3 各走一次长度 22 的路)。

输入示例 2

8 8 17
2 3 4 4 3 5 1

输出示例 2

6

示例 2 说明

起点在最右端的城镇 88,只能一路向左,不存在折返。此时总距离就是单程距离,1717 恰好够走到城镇 33,共 66 个城镇。这组数据用来检验起点在端点时的处理。

输入示例 3

2 1 1000000000000000000
10000

输出示例 3

2

示例 3 说明

LL 取到上限 101810^{18},远大于全部道路长度之和,所以能走遍所有城镇。这组数据用来检验是否使用了 long long:用 int 读入 LL 会直接溢出。

输入示例 4

9 6 28
5 4 9 2 3 6 1 4

输出示例 4

6

示例 4 说明

最优方案需要先往右再折返向左(或反之),而不是单向直走。这组数据用来检验是否比较了两种折返顺序:只考虑其中一种会得到 55

约束条件

  • 2N80002 \le N \le 8000
  • 1SN1 \le S \le N
  • 0L10180 \le L \le 10^{18}
  • 1Ai1091 \le A_i \le 10^9
  • 所有输入值均为整数