問題はこちら
No.208 王将 - yukicoder
障害物がないならば、必要な移動距離はmax(x,y)
x<yなら「縦に進んでから斜め」「斜めに進んでから縦」の少なくともどちらかで歩兵が回避できるので最短距離で移動可能
y<xも同様
x=yのときは、歩兵が王将と原点の間にいる場合のみ1歩ロスする
(歩兵の座標を仮に(1,1)と置けば、(0,0)→(1,0)→(2,1)→(2,2)と動く)
#define max(p,q)(p<q?q:p) int main(){ int x,y,a,b; scanf("%d%d%d%d",&x,&y,&a,&b); if(x==y&&a==b&&a<x)printf("%d",max(x,y)+1); else printf("%d",max(x,y)); return 0; }
ちゃちゃっと縮める
a,b,c; main(d){ scanf("%d%d%d%d",&a,&b,&c,&d); a=!printf("%d",(a<b?b:a)+!(a-b|c-d|c>a)); }
86B