Problem Description
“排排站,赏美女……”
YJ师兄在今年牡丹江赛区人品爆发,怒摘银奖,心情倍好,现组织大家去黄家湖边站成一排看美女 ^.^
N个人站成一排。不巧,美女们只在队伍的最左边和最右边,你们可以向左看或者向右看。如果第i个人向左看,当且仅当第i个人的身高h[i]>=h[j] ( j=1...i-1) 时,他能看到美女;如果第i个人向右看,当且仅当第i个人的身高h[i]>=h[j] (j=i+1..N)时,他能看见美女。已知N个人的身高,求最多有多少人能看到美女。
Input
先输入一个正整数T,表示有T组数据
每组数据:第一行 N。N<=100 000
第二行N个整数,表示每个人的身高(1<=h<=20000)
Output
输出能看到美女的人数。
Sample Input
Sample Output
5
1 #include<stdio.h>
2 #include<string.h>
3 int main()
4 {
5 int T,n,i,a[100005],b[100005];
6 int m_ax,sum;
7 scanf("%d",&T);
8 while(T--)
9 {
10 memset(b,0,sizeof(b));
11 scanf("%d",&n);
12 for(i=1; i<=n; i++)
13 scanf("%d",&a[i]);
14 m_ax=a[1];
15 sum=0;
16 for(i=1; i<=n; i++)
17 {
18 if(a[i]>=m_ax)
19 {
20 m_ax=a[i];
21 sum++;
22 b[i]=1;
23 }
24 }
25 m_ax=a[n];
26 for(i=n; i>0; i--)
27 {
28 if(a[i]>=m_ax)
29 {
30 m_ax=a[i];
31 if(b[i]==0)
32 sum++;
33 }
34 }
35 printf("%d
",sum);
36 }
37 return 0;
38 }