记录编号 |
75882 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOIP 2011]瑞士轮 |
最终得分 |
100 |
用户昵称 |
钨铅 |
是否通过 |
通过 |
代码语言 |
Pascal |
运行时间 |
0.986 s |
提交时间 |
2013-10-29 15:11:54 |
内存使用 |
7.03 MiB |
显示代码纯文本
program swiss;
var a,f,v,b,c,wi,fa,aw,af:array[1..200000]of longint;
i,j,n,r,q,k,t,l:longint;
procedure hb(s,m,n,t:longint);
var i,l,j,k:longint;
begin
k:=s;
i:=s;
j:=n;
while (i<=m)and(j<=t) do begin
if (f[i]>f[j])or((f[i]=f[j])and(a[i]<a[j])) then begin b[k]:=f[i]; c[k]:=a[i]; inc(i); end
else begin b[k]:=f[j]; c[k]:=a[j]; inc(j); end;
inc(k);
end;
for l:=i to m do begin b[k]:=f[l]; c[k]:=a[l]; inc(k); end;
for l:=j to n do begin b[k]:=f[l]; c[k]:=a[l]; inc(k); end;
for l:=s to t do begin
a[l]:=c[l];
f[l]:=b[l];
end;
end;
procedure gsort(s,t:longint);
var mid:longint;
begin
if s<t then begin
mid:=(s+t)div 2;
gsort(s,mid);
gsort(mid+1,t);
hb(s,mid,mid+1,t);
end;
end;
begin
assign(input,'swiss.in');
assign(output,'swiss.out');
reset(input);
rewrite(output);
read(n,r,q);
n:=n*2;
for i:=1 to n do begin
a[i]:=i;
read(f[i]);
end;
for i:=1 to n do read(v[i]);
gsort(1,n);
for i:=1 to r do begin
j:=-1;
k:=0;
repeat
j:=j+2;
if v[a[j]]>v[a[j+1]] then begin
f[j]:=f[j]+1;
k:=k+1;
wi[k]:=f[j];
aw[k]:=a[j];
fa[k]:=f[j+1];
af[k]:=a[j+1];
end
else begin
f[j+1]:=f[j+1]+1;
k:=k+1;
wi[k]:=f[j+1];
aw[k]:=a[j+1];
fa[k]:=f[j];
af[k]:=a[j];
end;
until j+1=n;
j:=1;
k:=1;
t:=1;
while (j<(n div 2))and(k<(n div 2)) do begin
if (wi[k]>fa[j])or((wi[k]=fa[j])and(aw[k]<af[j])) then begin f[t]:=wi[k]; a[t]:=aw[k]; inc(k); end
else begin f[t]:=fa[j]; a[t]:=af[j]; inc(j); end;
inc(t);
end;
for l:=k to (n div 2) do begin f[t]:=wi[l]; a[t]:=aw[l]; inc(t); end;
for l:=j to (n div 2) do begin f[t]:=fa[l]; a[t]:=af[l]; inc(t); end;
end;
write(a[q]);
close(input);
close(output);
end.