poj 3494 单调栈

#include
#include
#define MAX(x,y) ((x)>(y)?(x):(y))
using namespace std;
int n,m,d[2020];
int stack[2020],l[2020],r[2020];
long long res;
void cal()
{
	int tot=0;
	for(int i=0;i0&&d[stack[tot-1]]>=d[i])
		tot--;
		l[i]=tot==0?0:(stack[tot-1]+1);
		stack[tot++]=i; 
	}
	tot=0;
	for(int i=n-1;i>=0;i--)
	{
		while(tot>0&&d[stack[tot-1]]>=d[i])
		tot--;
		r[i]=tot==0?n:stack[tot-1];
		stack[tot++]=i;
    }  
	for(int i=0;i

你可能感兴趣的:(ACM,poj)