#Z1003. 周期取段
周期取段
题目描述
给定一个长度为 的正整数序列 。将这个序列无限重复,得到一个无限长序列:
你需要在这个无限长序列中选择一段连续子段,使得子段元素和恰好为 。如果存在这样的子段,输出最长可能长度;如果不存在,输出 No。
输入格式
第一行两个整数 ,表示原序列长度和目标和。
第二行 个正整数,第 个数为 。
输出格式
如果不存在元素和为 的连续子段,输出一行 No。
否则第一行输出 Yes,第二行输出一个整数,表示满足条件的最长连续子段长度。
3 9
2 1 2
Yes
5
3 9
2 2 2
No
4 10
1 2 3 4
Yes
4
样例解释
样例 1 中,无限序列为 2 1 2 2 1 2 ...,可以选择从第 个数到第 个数,子段为 2 2 1 2 2,和为 ,长度为 。
样例 2 中,任意连续子段的和都是偶数,不可能得到 。
样例 3 中,直接选择一个完整周期,长度为 。
数据范围与约定
| 子任务 | 分值 | 限制 |
|---|---|---|
| ,, | ||
| ,,,特殊性质 A | ||
| ,, | ||
| ,, |
特殊性质 A:保证所有 相等。