| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
..练习函数式treap。。。type
arr=record
ran,point,lnext,rnext,son:longint;
end;
var
tree:array[0..1000000] of arr;
n,m,root:longint;
procedure update(x:longint);
begin
tree[x].son:=tree[tree[x].lnext].son+tree[tree[x].rnext].son+1;
end;
function splitl(x,sub:longint):longint;
var
t:longint;
begin
if x=0 then exit(x);
if tree[x].point<=sub then
begin
inc(m);
t:=m;
tree[t]:=tree[x];
tree[t].rnext:=splitl(tree[x].rnext,sub);
update(t);
exit(t);
end
else exit(splitl(tree[x].lnext,sub));
end;
function splitr(x,sub:longint):longint;
var
t:longint;
begin
if x=0 then exit(x);
if tree[x].point>sub then
begin
inc(m);
t:=m;
tree[t]:=tree[x];
tree[t].lnext:=splitr(tree[x].lnext,sub);
update(t);
exit(t);
end
else exit(splitr(tree[x].rnext,sub));
end;
function merge(l,r:longint):longint;
var
t:longint;
begin
if l=0 then exit(r);
if r=0 then exit(l);
inc(m);
t:=m;
if tree[l].ran<tree[r].ran then
begin
tree[t]:=tree[r];
tree[t].lnext:=merge(l,tree[r].lnext);
end
else
begin
tree[t]:=tree[l];
tree[t].rnext:=merge(tree[l].rnext,r);
end;
update(t);
exit(t);
end;
function dfs(x,sub:longint):longint;
begin
if tree[tree[x].lnext].son+1=sub then exit(tree[x].point);
if tree[tree[x].lnext].son>=sub then exit(dfs(tree[x].lnext,sub))
else exit(dfs(tree[x].rnext,sub-tree[tree[x].lnext].son-1));
end;
procedure buildpoint(x:longint);
begin
inc(m);
with tree[m] do
begin
point:=x;
ran:=random(100000)+1;
lnext:=0;
rnext:=0;
son:=1;
end;
end;
procedure prepare;
begin
randomize;
fillchar(tree,sizeof(tree),0);
tree[0].son:=0;
m:=0;
buildpoint(-1);
root:=m;
end;
procedure work;
var
i,x,y:longint;
begin
for i:=1 to n do
begin
read(x);
buildpoint(x);
y:=m;
root:=merge(merge(splitl(root,x),y),splitr(root,x));
end;
end;
begin
readln(n);
prepare;
work;
writeln(dfs(root,(n+1) div 2+1));
end.
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator