A sequence of n integers is called smooth, if the absolute values of the differences between successive
numbers are at most d. We call a non-smooth sequence semi-smooth, if we can change exactly one
number in the sequence to make it smooth. For example, let n = 4 and d = 5. The sequence 21, 20,
18, 20 is smooth, since each pair of adjacent numbers has a gap smaller than 5. The sequence 21, -8,
20, 20 is semi-smooth, since we can replace -8 with 20 to make it smooth.
Write a program to test if a sequence of integers is smooth or semi-smooth.
Technical Specification
- All integers in the sequence have absolute values bounded by 2
20
. - 1 ≤ n, d ≤ 1000.
Input
An instance of the problem consists of the size n of the sequence, and the gap d in a line. They are
positive integers in the range [1, 1000]. Then n integers, separated with space(s), follow in the next
line.
Note that the test data file may contain more than one instance. The last instance is followed by a
line containing a single ‘0’.
Output
For each instance, output ‘Y’, if the sequence is smooth or semi-smooth in a separate line. Otherwise,
output ‘N’.
Sample Input
3 2
2 4 6
3 1
3 5 7
0
Sample Output
Y
N
题意:如果任意相邻的两个数字的差值绝对值小于p,则称该序列为光滑序列,如果改变一个非光滑序列的一个值使它变为光滑序列,则称该序列为半光滑序列。如果序列为光滑或者半光滑则输出Y,否则输出N;
解题思路(队友想出来的,真强!):从序列的第二个数到倒数第二个数依此遍历,如果遇到一个数和它的前一个数字的绝对差大于p,则flag加一(flag表示需要改的数的个数),然后