/*i071風景 (Landscape)
問題敘述
小明今天跑到家中頂樓看風景。他家所在道路上的建築連成一線,他往一
個方向看去的話,只能看到比他家還高且沒有被前方建築遮住的房子。
比如,路上由左至右的建築高度分別為 5, 3, 4, 2, 4。若小明家是由
左數來第二個建築,則他在頂樓往左邊看去可以看到第一棟建築,往右邊看只
能看見第三棟建築,第四棟和第五棟都會因為高度限制被前面建築遮住。
給定所有建築的高度及小明家的位置,請撰寫一個程式計算小明總共可以
看到的建築數量。
輸入格式
輸入第一列有兩個整數 N 和 M (2 <= N <= 1000,1 <= M <= 1000) 分別表示建
築數量以及小明家的位置。第二列有 N 個整數 Xi (0 <= Xi <= 1000,1 <= i <= N) 表示
建築物的高度。
輸出格式
輸出一個整數表示小明能夠觀看到的建築物數量。
輸入範例 1
5 1
1 2 3 4 5
輸出範例 1
4
輸入範例 2
7 4
7 2 3 2 5 4 3
輸出範例 2
3
輸入範例 3
6 5
3 1 4 8 9 1
輸出範例 3
0
評分說明
此題目測資分成兩組,每組測資有多筆測試資料,需答對該組所有測試
資料才能獲得該組分數,各組詳細限制如下。
第一組(20 分):N = 3。
第二組(80 分):無特別限制。*/
#include<bits/stdc++.h>
using namespace std;
int main(){
int n/*建築數量*/,m/*小明家的位置*/,xi[1001]={}/*建築物的高度*/,sum/*小明能夠觀看到的建築物數量*/,tallest/*目前高度*/;
while(cin>>n>>m){
sum=0;//初始值
for(int i=1;i<=n;i++){//n次
cin>>xi[i];//第i棟建築物的高度
}
tallest=xi[m];//小明家的位置為基準,左看
for(int j=m+1;j<=n;j++){
if(xi[j]>tallest) {tallest=xi[j] , sum++;}//","一起執行
}
tallest=xi[m];//小明家的位置為基準,右看
for(int k=m-1;k>=1;k--){
if(xi[k]>tallest) {tallest=xi[k] , sum++;}//","一起執行
}
cout<<sum<<endl;
}
return 0;
}