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
1 5 1 4 7 6 2
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\n",sum); 36 } 37 return 0; 38 }