POJ2559单调栈
来源:互联网 发布:新手c#编程题及答案 编辑:程序博客网 时间:2024/05/20 23:38
import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintWriter;import java.math.BigInteger;import java.util.Stack;import java.util.StringTokenizer;public class Main {public static void main(String args[]) {new Task().solve() ; }}class Task{InputReader in = new InputReader(System.in) ;PrintWriter out = new PrintWriter(System.out) ;void solve(){ int n ; while((n = in.nextInt()) != 0){ int[] high = new int[n+1] ; int[] left = new int[n+1] ; int[] right = new int[n+1] ; for(int i = 1 ; i <= n ; i++) high[i] = in.nextInt() ; Stack<Integer> stk = new Stack<Integer>() ; for(int i = 1 ; i <= n ; i++){ while(! stk.isEmpty() && high[stk.peek()] >= high[i]) stk.pop() ; left[i] = stk.isEmpty() ? 1 : stk.peek() + 1 ; stk.push(i) ; } stk.clear() ; for(int i = n ; i >= 1 ; i--){ while(! stk.isEmpty() && high[stk.peek()] >= high[i]) stk.pop() ; right[i] = stk.isEmpty() ? n : stk.peek() - 1 ; stk.push(i) ; } long res = 1L * high[1] * (right[1] - left[1] + 1) ; for(int i = 2 ; i <= n ; i++) res = Math.max(res , 1L * high[i] * (right[i] - left[i] + 1) ) ; out.println(res) ; }out.flush() ;}}class InputReader { public BufferedReader reader; public StringTokenizer tokenizer; public InputReader(InputStream stream) { reader = new BufferedReader(new InputStreamReader(stream), 32768); tokenizer = new StringTokenizer(""); } private void eat(String s) { tokenizer = new StringTokenizer(s); } public String nextLine() { try { return reader.readLine(); } catch (Exception e) { return null; } } public boolean hasNext() { while (!tokenizer.hasMoreTokens()) { String s = nextLine(); if (s == null) return false; eat(s); } return true; } public String next() { hasNext(); return tokenizer.nextToken(); } public int nextInt() { return Integer.parseInt(next()); } public long nextLong() { return Long.parseLong(next()); } public double nextDouble() { return Double.parseDouble(next()); } public BigInteger nextBigInteger() { return new BigInteger(next()); } }
0 0
- poj2559模拟单调栈
- poj2559单调栈
- poj2559(单调栈)
- POJ2559单调栈
- 萌萌的单调栈 : poj2796 , poj2559 ,
- poj2559(单调栈)最大矩形面积
- POJ2559 单调队列
- POJ2559 Largest Rectangle in a Histogram [单调栈]
- POJ2559 Largest Rectangle in a Histogram(单调栈)
- 单调栈 poj2559 Largest Rectangle in a Histogram
- [POJ2559]Largest Rectangle in a Histogram(单调栈)
- POJ2559 Largest Rectangle in a Histogram(单调栈)
- poj2559 Largest Rectangle in a Histogram(单调栈)
- POJ2559-Largest Rectangle in a Histogram(单调栈)
- POJ2559 POJ2082 POJ3494(最大矩形面积 单调栈)
- Largest Rectangle in a Histogram POJ2559(单调栈模板)
- 单调栈--poj2559 Largest rectangle in a Histogram
- poj2559 Largest Rectangle in a Histogram (单调栈)
- java注解
- android多进程深入分析
- VC 判断CString字符串中各位是数字,大小写字母,符号,汉字。(UNICODE和ANSI)
- Java程序员到架构师的推荐阅读书籍
- Python raw字符串(raw strings)
- POJ2559单调栈
- 笔记——数据结构入门
- Hadoop学习8_hadoop入门手册4:Hadoop【2.7.1】初级入门之命令:文件系统shell1
- 12Bet Malaysia Casino Weekly Bonus | Malaysia Online Casino (12bet,12bet malaysia casino,weekly bonu
- Git工具使用命令行总结
- Git常见操作命令
- wine汉字问题
- 00002 贪婪洞窟.003.5:地牢商店
- java上传图片到阿里云