1088.pas

来自「平时acm训练时ac的源代码」· PAS 代码 · 共 51 行

PAS
51
字号
program ilyamurumets;
 type position=record level,value:longint; end;
 var magm,murm,f,h,mur,mag:longint;
     count:longint;
     murom,magic:position;
     i,k:longint;
     muromets:array[1..32] of position;
     magicstone:array[1..32] of position;
     countmur,countmag:longint;
     min:longint;
 function prev(i:longint):longint;
 	begin
    prev:=((i-1) div 2)+1;
  end;
begin
  readln(magm,murm,f,mag,mur,h);
  count:=0;
  murom.level:=murm;
  for i:=1 to murm do mur:=prev(mur);
  murom.value:=mur;
  magic.level:=magm;
  for i:=1 to magm do mag:=prev(mag);
  magic.value:=mag;
  countmur:=1;
  muromets[1].level:=murom.level;
  muromets[1].value:=murom.value;
  countmag:=1;
  magicstone[1].level:=magic.level;
  magicstone[1].value:=magic.value;
  while murom.level<>f do begin
    inc(countmur);
    inc(murom.level);
    murom.value:=prev(murom.value);
    muromets[countmur].level:=murom.level;
    muromets[countmur].value:=murom.value;
  end;
  while magic.level<>f do begin
    inc(countmag);
    inc(magic.level);
    magic.value:=prev(magic.value);
    magicstone[countmag].level:=magic.level;
    magicstone[countmag].value:=magic.value;
  end;
  min:=1000000000;
  for i:=1 to countmur do
  	for k:=1 to countmag do
    	if (muromets[i].level=magicstone[k].level)and(muromets
[i].value=magicstone[k].value) then
      	if i+k-2<min then min:=i+k-2;
  if min<=h then writeln('YES') else writeln('NO');
end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?