比赛 20240913练习 评测结果 AAAAAAAAAA
题目名称 奶牛排队 最终得分 100
用户昵称 健康铀 运行时间 0.444 s
代码语言 C++ 内存使用 3.67 MiB
提交时间 2024-09-13 21:14:53
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,s[100005],ans,cz,a1[100005],top1,a2[10005],top2;
void ef()	
{
	int l=1,r=top2;
	while(l<=r)
	{
		int mid=(l+r)>>1;
		if(a2[mid]>a1[top1])
        r=mid-1;
		else l=mid+1;
	}
	cz=l;
}
int main(){
    freopen("tahort.in","r",stdin);
	freopen("tahort.out","w",stdout);
	cin>>n;
	for(int i=1; i<=n; i++){
		cin>>s[i];
		while(top1&&s[a1[top1]]<s[i])
        top1--;
		while(top2&&s[a2[top2]]>s[i])
        top2--;
        ef();
		if(cz!=top2+1)
        ans=max(ans,i-a2[cz]+1);
		a1[++top1]=i;
		a2[++top2]=i;
	}
	cout<<ans;
	return 0;
}