. 奶牛排队
【题目描述】:
【输入描述】:
【输出描述】:
【样例输入】:
5 1 2 3 4 1
【样例输出】:
4
【样例说明】:
【时间限制、数据范围及描述】:
【code】
1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 using namespace std; 5 int f[1000005], h[1000005]; 6 int n,ans,i; 7 int main(){ 8 scanf("%d",&n); 9 for(i=1;i<=n;i++) 10 scanf("%d",&h[i]); 11 for(i=1;i<=n;i++){ 12 int id=i-1, j=i-1; 13 while(j) { 14 if(h[j]>=h[i]) break; 15 if(h[f[j]+1]<h[id+1]) id=f[j]; 16 j=f[j]; 17 } 18 f[i]=id; 19 ans=max(ans, i-id); 20 } 21 if(ans==1)ans=0; 22 printf("%d", ans); 23 return 0; 24 }
#include <cstdio> #include <cstring> #include <algorithm> using namespace std; int f[1000005], h[1000005]; int n,ans,i; int main(){ scanf("%d",&n); for(i=1;i<=n;i++) scanf("%d",&h[i]); for(i=1;i<=n;i++){ int id=i-1, j=i-1; while(j) { if(h[j]>=h[i]) break; if(h[f[j]+1]<h[id+1]) id=f[j]; j=f[j]; } f[i]=id; ans=max(ans, i-id); } if(ans==1)ans=0; printf("%d", ans); return 0; }