題目描述 一組數,分別表示地平線的高度變化。高度值為整數,相鄰高度用直線連接。找出並統計有多少個可能積水的低窪地? 如圖:地高變化為 0 1 0 2 1 2 0 0 2 0 輸入輸出格式 輸入格式: 兩行,第一行n,表示有n個數。第2行連續n個數表示地平線高度變化的數據,保證首尾為0。(3<=n<= ...
題目描述
一組數,分別表示地平線的高度變化。高度值為整數,相鄰高度用直線連接。找出並統計有多少個可能積水的低窪地?
如圖:地高變化為 0 1 0 2 1 2 0 0 2 0
輸入輸出格式
輸入格式:
兩行,第一行n,表示有n個數。第2行連續n個數表示地平線高度變化的數據,保證首尾為0。(3<=n<=10000,0<=高度<=1000)
輸出格式:
一個數,可能積水低窪地的數目。
輸入輸出樣例
輸入樣例#1: 複製10 0 1 0 2 1 2 0 0 2 0輸出樣例#1: 複製
3
數組模擬lyq大坑比
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cmath> 5 #include<algorithm> 6 #include<deque> 7 #define LL long long 8 #define lb(x) ((x)&(-x)) 9 using namespace std; 10 const int MAXN=1000001; 11 inline int read() 12 { 13 char c=getchar();int x=0,f=1; 14 while(c<'0'||c>'9') {if(c=='-') f=-1;c=getchar();} 15 while(c>='0'&&c<='9') x=x*10+c-48,c=getchar();return x*f; 16 } 17 int n; 18 int a[MAXN]; 19 int main() 20 { 21 n=read(); 22 for(int i=1;i<=n;i++) 23 a[i]=read(); 24 int nowhigh=a[2],ans=0; 25 for(int i=2;i<=n;i++) 26 { 27 if(a[i]>nowhigh) nowhigh=a[i]; 28 if(a[i+1]<nowhigh&&a[i+2]>a[i+1]) ans++,nowhigh=a[i+2],i=i+1; 29 } 30 printf("%d",ans); 31 return 0; 32 } 33 34 /* 35 11 36 37 10 9 8 8 8 7 8 2 1 1 2 38 */