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: