以前總是靠人肉暴力模擬,這個題目複雜度太高搞不過去了,
棧模擬,又學到了新的東西
import java.io.*;
import java.math.BigInteger;
import java.util.*;
class item1{
int value,idx;
public item1(int x,int y){
value=x;idx=y;
}
}
class problem{
int n,t=0;
long sum;
item1 stack[];
void solver() throws IOException{
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
n = Integer.valueOf(reader.readLine());
stack = new item1[n+1];
stack[t]=new item1(Integer.MAX_VALUE,0);
for(int i=1;i<=n+1;i++){
int tmp;
if(i<n+1) tmp = Integer.valueOf(reader.readLine());
else tmp = Integer.MAX_VALUE;
while(tmp>=stack[t].value&&t>=1) {
sum+=i-1-stack[t--].idx;
}
stack[++t]=new item1(tmp,i);
}
System.out.println(sum);
}
}
public class Main{
public static void main (String [] args) throws Exception {
problem p = new problem();
p.solver();
}
}