70分求助,wa6,7,8
  • 板块P6510 奶牛排队
  • 楼主crean_
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/12/3 15:41
  • 上次更新2023/12/3 18:03:59
查看原帖
70分求助,wa6,7,8
921417
crean_楼主2023/12/3 15:41
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<vector>
#include<deque>
#include<cmath>
#include<cstring>
using namespace std;
int main(){
	int n,ans=0;
	cin>>n;
	vector<long long> value(n+3);
	deque<int> lable;
	for(int i=1;i<=n;i++){
		cin>>value[i];
		if(!lable.empty()&&value[i]<=value[lable.front()]){
			int tmp=lable.back();
			lable.pop_back();
			while(!lable.empty()&&value[tmp]==value[lable.back()]){//如果当前输入的值不大于a 说明这段连续的奶牛结束了
				tmp=lable.back();
				lable.pop_back();//把b去重
			}
			lable.push_back(tmp);
			int s=lable.front(),ba=lable.back();
				ans=max(ans,ba-s+1);
			lable.clear();//清空存储下标的deque并计算出这一段连续的奶牛的个数
		}
		if(lable.empty()||value[i]>=value[lable.back()]){//如果当前输入的值大于b 就更新b的位置和值
			lable.push_back(i);
		}
	}
	int tmp=lable.back();//同样是把b去重
		lable.pop_back();
		while(!lable.empty()&&value[tmp]==value[lable.back()]){
			tmp=lable.back();
			lable.pop_back();
		}
		lable.push_back(tmp);
		int s=lable.front(),ba=lable.back();
	ans=max(ans,ba-s+1);
	if(ans==1) ans--;	
	cout<<ans;
} 
2023/12/3 15:41
加载中...