1773【RMQ&LCA】Cartesian Tree(笛卡尔树)(2)

2019-03-15 13:02

end;

procedure dfs(l,r:longint); var x,y,z:longint; begin

if l=r then exit; x:=rmq(l,r); y:=0; z:=0;

if x<>l then begin y:=rmq(l,x-1);

if (k[y]a[x]) then begin d[b[x],2]:=b[y]; d[b[y],1]:=b[x]; dfs(l,x-1); end; end;

if x<>r then begin z:=rmq(x+1,r);

if (k[z]>k[x]) and (a[z]>a[x]) then begin d[b[x],3]:=b[z]; d[b[z],1]:=b[x]; dfs(x+1,r); end; end; end;

begin

readln(n);

for i:=1 to n do begin

readln(k[i],a[i]); b[i]:=i; end; kp(1,n); rmq1(n); dfs(1,n);

writeln('YES');

for i:=1 to n do writeln(d[i,1],' ',d[i,2],' ',d[i,3]); end.


1773【RMQ&LCA】Cartesian Tree(笛卡尔树)(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:四级应试词汇巧记联想记单词一

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: