请问逻辑上有问题吗?30pts
  • 板块P6510 奶牛排队
  • 楼主wh_up
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/9/11 18:23
  • 上次更新2024/9/11 21:29:27
查看原帖
请问逻辑上有问题吗?30pts
983436
wh_up楼主2024/9/11 18:23
#include<cstdio>
#include<queue>
#include<algorithm> 
#define N 100005

using namespace std;

int n,num[N], ans;
queue<int> q; 

int main(void)
{
	int i,j;
	scanf("%d",&n);
	for(i=1;i<=n;i++)	scanf("%d",num+i);
	
	for(i=1;i<=n;i++){
		if( q.size() == 0 || num[i] > q.back() ){
			// 队为空或者当前i元素>队尾元素
			q.push(num[i]); // 进队 
			if( q.size()>1 )	ans = ans>q.size()?ans:q.size(); 
		}else if(num[i] == q.back()){
			if(q.size() > 1)	q.push(num[i]); // 非最小元素,则直接进队 
		}else{
			// 否则说明 num[i] < q.back(),清空队列 
			while( !q.empty() ) 	q.pop();
			
			// 清空后,将当前元素进队啊! 
			q.push(num[i]); 
		}
	}
	printf("%d", ans); 
	return 0;
}
2024/9/11 18:23
加载中...