a[n + 1] = t = 0; long long area = 0; for(int i = 1; i <= n + 1; i++) { if(a[i] > s[t]) s[++t] = a[i], w[t] = 1; else { int width = 0; while(a[i] < s[t]) { width += w[t]; area = max(area, (long long)width * s[t]); t--; } width++; s[++t] = a[i], w[t] = width; } }