poj 2559 스 택 활용

#include
#define max(x,y) ((x)>(y)?(x):(y))
using namespace std;
int main()
{
	int stack[100010],h[100010],L[100010],R[100010];
	int n;
	while(~scanf("%d",&n)&&n)
	{
		int i,t;
		for(i=0;i0&&h[stack[t-1]]>=h[i])
			t--;
			L[i]=t==0?0:(stack[t-1]+1);
			stack[t++]=i;
		}
		t=0;
		for(i=n-1;i>=0;i--)
		{
			while(t>0&&h[stack[t-1]]>=h[i])
			t--;
			R[i]=t==0?n:stack[t-1];
			stack[t++]=i;
		}
		long long res=0;
		for(i=0;i

좋은 웹페이지 즐겨찾기