记录编号 113746 评测结果 AAAAAAAAAA
题目名称 [NOIP 2011]瑞士轮 最终得分 100
用户昵称 Gravatar传奇 是否通过 通过
代码语言 Pascal 运行时间 1.172 s
提交时间 2014-07-25 22:15:38 内存使用 34.50 MiB
显示代码纯文本
program cojs625;
type
  node=record
    s,w:longint;
	bh:longint;
  end;
var
  n,r,q,i,j,l:longint;
  a,c,b:array[1..1000000] of node;
procedure qp(l,r:longint);
var
  i,j:longint;
  y,x:node;
begin
  i:=l; j:=r;
  x:=a[(l+r)div 2];
  repeat
    while (a[i].s>x.s)or((a[i].s=x.s)and(a[i].bh<x.bh)) do inc(i);
	while (a[j].s<x.s)or((a[j].s=x.s)and(a[j].bh>x.bh)) do dec(j);
	if i<=j then
	  begin
	    y:=a[i]; a[i]:=a[j]; a[j]:=y;
		inc(i); dec(j);
	  end;
  until i>j;
  if j>l then qp(l,j);
  if i<r then qp(i,r);
end;
procedure guibing(l,r:longint);
var
  i,j,mid,p:longint;
begin
  mid:=(l+r)div 2;
  i:=l; j:=mid+1; p:=l;
  while (i<=mid)and(j<=r) do
    begin
	  if (b[i].s>b[j].s)or((b[i].s=b[j].s)and(b[i].bh<b[j].bh)) then
	    begin
		  c[p]:=b[i];
		  inc(p);
		  inc(i);
		end
	  else
	    begin
		  c[p]:=b[j];
		  inc(p);
		  inc(j);
		end;
    end;
  while i<=mid do
    begin
	  c[p]:=b[i];
	  inc(p);
	  inc(i);
    end;
  while j<=r do
    begin
	  c[p]:=b[j];
	  inc(j);
	  inc(p);
    end;
  for i:=l to r do
    a[i]:=c[i];
end;
begin
  assign(input,'swiss.in');
  assign(output,'swiss.out');
  reset(input);
  rewrite(output);

  readln(n,r,q);
  for i:=1 to n*2 do
    read(a[i].s);
  for i:=1 to 2*n do
    begin
      read(a[i].w);
	  a[i].bh:=i;
	end;
  qp(1,2*n);
  for i:=1 to r do
    begin
	  j:=1;l:=0;
	  while j<2*n do
        begin
		  if a[j].w>a[j+1].w then
		    begin
		      inc(a[j].s);
			  inc(l);
			  b[l]:=a[j];
			  b[n+l]:=a[j+1];
			end
		  else
		    begin
		      inc(a[j+1].s);
			  inc(l);
			  b[l]:=a[j+1];
			  b[l+n]:=a[j];
			end;
              j:=j+2;
        end;
      	guibing(1,2*n);
    end;
  writeln(a[q].bh);


  close(input);
  close(output);
end.