题目求调
  • 板块灌水区
  • 楼主Nake_fu
  • 当前回复0
  • 已保存回复2
  • 发布时间2024/5/3 07:44
  • 上次更新2024/5/3 11:04:09
查看原帖
题目求调
727172
Nake_fu楼主2024/5/3 07:44

一群高度不完全相同的牛从左到右站成一排,每头牛只能看见它右边的比它矮的牛的发型,若遇到一头高度大于或等于它的牛,则无法继续看到这头牛后面的其他牛。

给出这些牛的高度,要求每头牛可以看到的牛的数量的和。

输入 第一行:一个整数 n ( 10 ≤ ? ≤ 10^6 ) (10≤n≤10 ^6 )。

第二行:n个整数,从左到右依次给出每头牛的高度,不大于 10^6 。

输出 一行一个整数,为答案。

样例输入:

5

3 2 4 1 5

输出:

2

代码:

#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
typedef long long ll;
stack <ll> s;
ll n,ans;
ll a[N];
signed main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	s.push(1); 
	for(int i=2;i<=n;i++)
	{
		while(!s.empty()&&a[s.top()]<a[i]) s.pop();
		if(!s.empty()&&a[i]<a[s.top()]) ans++;
	    s.push(i);
	}
	cout<<ans;
	return 0;
}

违规紫衫

2024/5/3 07:44
加载中...