记录编号 55513 评测结果 AAAAAAAAAAAA
题目名称 售票系统 最终得分 100
用户昵称 GravatarCAX-DY 是否通过 通过
代码语言 Pascal 运行时间 0.186 s
提交时间 2013-03-20 14:07:45 内存使用 1.30 MiB
显示代码纯文本
uses math;
const maxn=1<<17; ok='YES'; no='NO';
var i,j,k,c,s,r,dep:int64; a:array[0..maxn]of int64;
procedure ins(x,y,z:int64); var i:int64;
begin
 x:=x+dep-1; y:=y+dep+1;
 while x xor y<>1 do
  begin
   if x and 1=0 then inc(a[x xor 1],z);
   if y and 1=1 then inc(a[y xor 1],z);
   i:=max(a[x],a[x xor 1]); dec(a[x],i); dec(a[x xor 1],i); inc(a[x>>1],i);
   i:=max(a[y],a[y xor 1]); dec(a[y],i); dec(a[y xor 1],i); inc(a[y>>1],i);
   x:=x>>1; y:=y>>1;
  end;
 while x>1 do
  begin
   i:=max(a[x],a[x xor 1]);
   dec(a[x],i); dec(a[x xor 1],i); inc(a[x>>1],i);
   x:=x>>1;
  end;
end;
function get(x,y:int64):int64; var i,j:int64;
begin
 x:=x+dep; y:=y+dep; i:=0; j:=0;
 if x<>y then begin
  while x xor y<>1 do
   begin
    i:=i+a[x];  j:=j+a[y];
    if x and 1=0 then i:=max(i,a[x xor 1]);
    if y and 1=1 then j:=max(j,a[y xor 1]);
    x:=x>>1; y:=y>>1;
   end;
   i:=i+a[x];  j:=j+a[y];
   get:=max(i,j);
  end
   else get:=a[x];
 while x>1 do
  begin
   x:=x>>1;
   get:=get+a[x];
  end;
end;
begin
assign(input,'railway.in'); assign(output,'railway.out'); reset(input); rewrite(output);
 readln(c,s,r); dep:=1; while dep<=c+1 do dep:=dep<<1;
 repeat
  readln(i,j,k);
  if get(i,j-1)+k<=s then
   begin
    writeln(ok); ins(i,j-1,k);
   end
    else writeln(no);
  dec(r);
 until r=0;
close(input); close(output);
end.