题目:
小美和小团要搬家,他们要把家具从围栏上搬过去,围栏由n个独立的木桩排成一条直线组成,第i个木桩编号为i,由于他们的体力限制,只能越过高度不高于h的围栏,同时家具又要有宽度限制,只有连续m个木桩都能搬过去才能成功将家具搬过去,现在他们想知道他们能否搬家成功。
输入描述:
第一行三个整数,n,m,h,含义如上文所示。
第二行n个整数,依次表示n个木桩的高度。
1<=m<=n<=10^5 ,木桩高度<=10^9
输出描述:
输出一个整数,若搬家成功,输出第一个跨过的木桩的编号,若有多组答案输出最小的,否则输出整数-1.
样例输入:
5 3 2
3 2 1 1 2
样例输出:
2
思路:水题,滑动窗口求第一个木桩编号。
代码:
#include <iostream>
using namespace std;
int main() {
int n, m, h;
cin >> n >> m >> h;
int a[n + 5];
for (int i = 1; i <= n; i++)
cin >> a[i];
int right = 1;
int maxn = 0;
while (right <= n) {
if (a[right] <= h)
maxn += 1;
else
maxn = 0;
right++;
if (maxn == m) {
cout << right - m << endl;
return 0;
}
}
return -1;
}