Codeforces Round 278 (Div. 1)
B
Strip
Codeforces
2000
原题
← AC →
翻译中…

Alexandra has a paper strip with $*n*$ numbers on it. Let's call them $*a*_{*i*}$ from left to right.

翻译中…

Now Alexandra wants to split it into some pieces (possibly $1$). For each piece of strip, it must satisfy:

翻译中…
  • Each piece should contain at least $*l*$ numbers.
  • The difference between the maximal and the minimal number on the piece should be at most $*s*$.
翻译中…

Please help Alexandra to find the minimal number of pieces meeting the condition above.

翻译中…

Input

翻译中…

The first line contains three space-separated integers $*n*, *s*, *l*$ ($1 ≤ *n* ≤ 10^{5}, 0 ≤ *s* ≤ 10^{9}, 1 ≤ *l* ≤ 10^{5}$).

翻译中…

The second line contains $*n*$ integers $*a*_{*i*}$ separated by spaces ($- 10^{9} ≤ *a*_{*i*} ≤ 10^{9}$).

翻译中…

Output

翻译中…

Output the minimal number of strip pieces.

翻译中…

If there are no ways to split the strip, output -1.

翻译中…

Note

翻译中…

For the first sample, we can split the strip into $3$ pieces: $[1, 3, 1], [2, 4], [1, 2]$.

翻译中…

For the second sample, we can't let $1$ and $100$ be on the same piece, so no solution exists.

翻译中…

样例

Input #1
7 2 2
1 3 1 2 4 1 2
Output #1
3
InputCopy OutputCopy
Input #2
7 2 2
1 100 1 100 1 100 1
Output #2
-1
InputCopy OutputCopy
题目信息
题号
487B
时间限制
1 s
内存限制
256 MB
标签
二分
数据结构
动态规划
双指针

题面与样例版权归 Codeforces 及出题人所有;中文翻译由 AI 生成(CI 管线),如有出入请以原文为准。