传送门
http://www.lydsy.com/JudgeOnline/problem.php?id=1657
题目大意
一个点向两边发出声音,但只对它两边离它最近的的严格比它高的点作用,询问被作用最大点的值
题解
单调栈
var
x:array[0..50000,1..2]of longint;
t,ans:array[0..50000]of longint;
i,j,k:longint;
n,tail:longint;
begin
readln(n);
for i:=1 to n do
readln(x[i,1],x[i,2]);
x[0,1]:=maxlongint; x[n+1,1]:=maxlongint;
fillchar(ans,sizeof(ans),0);
t[1]:=0; tail:=1;
for i:=1 to n do
begin
for j:=tail downto 1 do
if x[t[j],1]>x[i,1] then begin k:=j+1; break; end;
t[k]:=i; tail:=k; inc(ans[t[k-1]],x[i,2]);
end;
t[1]:=n+1; tail:=1;
for i:=n downto 1 do
begin
for j:=tail downto 1 do
if x[t[j],1]>x[i,1] then begin k:=j+1; break; end;
t[k]:=i; tail:=k; inc(ans[t[k-1]],x[i,2]);
end;
ans[0]:=0;
for i:=1 to n do
if ans[i]>ans[0] then ans[0]:=ans[i];
writeln(ans[0]);
end.