Official

A - Adjacent Squares Editorial by physics0523


ぱっと思いつきそうな解法として、場合分けに頼った解法が挙げられますが、非常に間違いが発生しやすいため危険です。そこで、この解説ではなるべく簡単に解く方針を紹介します。

全体の方針としては、

  • マス \((R,C)\) の左側にマスがある
  • マス \((R,C)\) の右側にマスがある
  • マス \((R,C)\) の上側にマスがある
  • マス \((R,C)\) の下側にマスがある

のうち、真であるようなものの数を数えます。

まず、マス \((R,C)\) の左側にマスが存在する条件を考えます。
「マス \((R,C)\) の左側にマスが存在する」ことは「 \(C \neq 1\) 」と同値です。

次に、マス \((R,C)\) の右側にマスが存在する条件を考えます。
「マス \((R,C)\) の右側にマスが存在する」ことは「 \(C \neq W\) 」と同値です。

上下方向も同様にして判定することができます。

実装例(C++):

#include<bits/stdc++.h>

using namespace std;

int main(){
  int h,w;
  int r,c;
  cin >> h >> w;
  cin >> r >> c;
  int res=0;
  if(c!=1){res++;}
  if(c!=w){res++;}
  if(r!=1){res++;}
  if(r!=h){res++;}
  cout << res << '\n';
  return 0;
}

posted:
last update: