년 동안, 도시 N의 날 여름의 가장 비오는 날에 개최되었다. 새로운 시장이 전통을 파괴하고 선택하기로 결정 그리 비가 오는 축하에 대한 일을. 시장은 여름의 N 일에 대한 예측 날씨를 알고있다. i 번째 날, 비가 밀리미터가 떨어질 인공 지능. 모든 값은 별개 인공 지능.
시장은 시민들이 축하와 후 Y 일 전에 기상 X 일을 볼 것이라는 점을 알고있다. 그 때문에 그는 하루 DIS 말한다 - 그래서 - 비오는없는 광고가 비 d 날 이전에 X 일의 각의 양 및 하루 D 후, y를 일의 각보다 작은 경우. 즉, 광고가 <AJ 모든 D-x≤j <D 및 D <j≤d + Y 대해 유지한다. 시민은 여름 날씨를보고, 그래서 우리는 1≤j≤n 같은 J를 고려한다.
도움말 시장은 찾을 초기 그리 비오는 여름 날.
입력
여름에 일의 수, 일 시민의 수는 행사 전에 날씨와 일의 수를보고 - 첫 번째 라인은 N, x와 y (1≤n≤100000, 0≤x는 y≤7) 세 개의 정수를 포함 그들은 후에 그렇게.
두 번째 행은 N 개의 별개의 정수 (A1), (A2)를, ..., 포함 된 AI는 i 번째 날에 비 량을 나타낸다 (1≤ai≤10 ^ 9).
산출
최초의 인덱스 - 단일 정수 인쇄 그리 비오는 여름 날. 우리는 대답은 항상 존재 함을 표시 할 수 있습니다.
예
입력
10 2
9 10 6 7 8 1 2 3 4 5
산출
삼
입력
10 (2) (3)
9 10 6 7 8 1 2 3 4 5
산출
8
입력
5 5 5
100,000 10,000 1,000 100 10
산출
5
노트
첫 번째 예제 일에서 3, 8은 그리 비오는 . 3 번째 일 이전이다.
두 번째 예에서는 3 일 아니다 그다지없는 비가 3 + Y = 6 때문에 A3> A6. 따라서, 하루 8 대답이다. 그 8 + y를 = 11 참고하지만, 여름이 아니기 때문에 우리는 하루 11 고려하지 않습니다.
제목의 의미 : 제목이 의미 당신 N 강우량의 일 및 X하는 Y
첫날 강우량이 일 강우량보다 큰 이전과 강우량의 비 y를 일의 X 일 이후에 충족하도록 요청.
아이디어 : 직접 각 지점의 전면에서 당신은 자격이 가능한 솔루션을 찾을 때까지 수를 x와 y 1의 수를 열거 N, 처음 몇 일의 첫 번째 출력됩니다.
국경의 X 또는 Y 번호를 찾고 앞의 숫자는 건너 뛸 경우 가능한 솔루션에 영향을 미치는,하지만 실현 가능한 해결책을 준수하지 않는 강우에 영향을주지 않습니다이다 구덩이가있다.
1 #include<iostream>
2 #include<cstdio>
3 #include<cmath>
4 #include<cstring>
5 #include<map>
6 #include<set>
7 #include<vector>
8 #include<algorithm>
9 #include<queue>
10 #include<unordered_map>
11 #include<list>
12 using namespace std;
13 #define ll long long
14 const int mod=1e9+7;
15 const int inf=1e9+7;
16
17 const int maxn=1e5+5;
18
19 int num[maxn];
20
21 int main()
22 {
23 ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
24
25 int n,x,y;
26
27 while(cin>>n>>x>>y)
28 {
29 memset(num,0,sizeof(num));
30
31 for(int i=1;i<=n;i++)
32 cin>>num[i];
33
34 for(int i=1;i<=n;i++)//枚举1到n是否为可行解
35 {
36 int now=i;//当前i
37
38 int flag=0;
39 for(int j=now-1;j>=now-x&&j>=1;j--)//向前枚举x个,
40 {
41 if(num[j]<num[now])//不符合刷新flag
42 {
43 flag=1;
44 break;
45 }
46 }
47
48 if(flag==1)//已经不符合,不用再枚举后y个,直接退出
49 continue;
50
51 for(int j=now+1;j<=now+y&&j<=n;j++)//枚举后y个
52 {
53 if(num[j]<num[now])//不符合刷新flag
54 {
55 flag=1;
56 break;
57 }
58 }
59
60 if(flag==0)
61 {
62 cout<<now<<endl;//输出最优解
63 break;
64 }
65
66 }
67
68 }
69
70 return 0;
71 }