維護一個單調棧,速度還可以,但是尼瑪這代碼怎麼寫着這麼蛋疼
/*
ID: daniel.20
LANG: JAVA
TASK: tour
*/
import java.util.*;
import java.io.*;
class item{
int value,idx;
public item(int a, int b){
value=a;idx=b;
}
}
class pb1{
int n;
item arr[];
StringBuilder sb = new StringBuilder();
void solver() throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String t;
while((t=reader.readLine())!=null){
StringTokenizer st = new StringTokenizer(t);
n = Integer.valueOf(st.nextToken());
if(n==0) break;
arr = new item[n+1];
arr[0]=new item(-1, 0);
int p=0; long max=0;
for(int i=1;i<=n+1;i++) {
boolean flag = false;
int tmp = i==n+1?-1:Integer.valueOf(st.nextToken());
while(tmp<arr[p].value){
flag=true;
long dis = i-arr[p].idx;
long temp = arr[p].value*dis;
if(temp>max) max=temp;
--p;
}
if(flag) {
arr[++p].value = tmp;
continue;
}
if(tmp>arr[p].value) arr[++p] = new item(tmp, i);
}
sb.append(max).append("\n");
}
System.out.print(sb.toString());
}
}
public class tour {
public static void main(String[] args) throws Exception {
pb1 p = new pb1();
p.solver();
}
}