- 人工降雨
题目ID:1240 必做题100分
最新提交:
Wrong Answer
0 分
历史最高:
Wrong Answer
0 分
时间限制: 1000ms
空间限制: 32768kB
题目描述
如上图所示,每个位置都有一个建筑,每个位置占据的宽度都是一样,可能有不同的高度,现在需要挑选一个位置的上方开始人工降雨,问你最多能淋到雨的位置有几个。如果一个位置能被雨淋到,而且紧挨着的旁边的建筑不高于他,那么旁边的建筑也能被雨淋到,上图中在中间的地方降雨总共有4个位置会被淋到。
输入格式:
第一行输入一个整数�n
第二行输入�n个数,表示�n个建筑的高度。
输出格式:
输出一个整数
样例输入1:
5 1 2 1 2 1
样例输出1:
3
样例输入2:
8 1 2 1 1 1 3 3 4
样例输出2:
6
约定:
1 <=� <=1000,建筑的高度都<=10001 <=n <=1000,建筑的高度都<=1000
我的代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,mi=8888,a[1005],ds,maxx=0,num,v=1;
bool s=true;
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
if(a[i]<mi) mi=a[i];
if(i==0) ds=a[i];
if(a[i]!=ds && v==1){
s=!s;
v++;
}
}
if(s==true){
cout<<n;
return 0;
}
for(int i=0,j=0;i<n;i++){
if(a[i]!=mi){
int k=i;
num=0;
while(a[k]>=a[k+1] && k<n){
k++;
num++;
}
k=i;
while(a[k]<=a[k-1] && k>0){
k–;
num++;
}
num++;
if(num>maxx) maxx=num;
}
}
cout<<maxx;
return 0;
}