传送门
单调栈大水题
l[i] 表示 i 能扩展到的左边
r[i] 表示 i 能扩展到的右边
——代码
1 #include <cstdio> 2 #include <iostream> 3 #define LL long long 4 5 const int MAXN = 2000002; 6 int n, t; 7 LL ans, a[MAXN], s[MAXN], l[MAXN], r[MAXN]; 8 9 inline int read() 10 17 18 inline LL max(LL x, LL y) 19 22 23 int main() 24 34 t = 0; 35 for(i = n; i >= 0; i) 36 40 for(i = 1; i <= n; i++) ans = max(ans, a[i] * (r[i] l[i] 1)); 41 printf("%lld\n", ans); 42 return 0; 43 }View Code