読者です 読者をやめる 読者になる 読者になる

メモ

yukicoderで遊んでいる競プロゆるふわ勢

yukicoder No.208 王将

問題はこちら
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