poj3250单调栈

有n只羊,(姑且算是羊吧,也有可能是牛啊猫啊什么之类的),每只羊都有一个身高,前面的羊要看到后面的羊的条件是,后面的羊高度要小于前面的羊,就问各位羊加起来看到的牛多少只.......

 

#include<iostream>

#include<stack>

#include<stdio.h>

using namespace std;

int main()

{

	int n;

	while(scanf("%d",&n)>0)

	{

		stack<__int64>Q;

		__int64 num,sum=0;

		scanf("%I64d",&num);

		Q.push(num);

		for(int i=1;i<n;i++)

		{

			scanf("%I64d",&num);

			while(!Q.empty()&&Q.top()<=num)

			Q.pop();

			sum+=Q.size();

			Q.push(num);

		}

		printf("%I64d\n",sum);

	}

	return 0;

}

 

 

 

你可能感兴趣的:(poj)