ちょっとしたコードなら変数を定義せずにオブジェクトをそのまま使う

界隈のナウでヤングな皆さんは正月から元気ですのぅ。

喉が痛いのでキレートレモンを飲んでいます。。。(ヨボヨボ

SRM211 div2 (300)

問題

長方形の画面コンポーネント「Saveボタン」がある。

ボタンの左上と右下の座標が明らかになっている。

マウスクリックした座標を、行と列それぞれのvectorで与える。

Saveボタンをアクティベートするクリックの番号(index)を、vectorで返せ。

自分の解答
#include <vector>

class grafixClick
{
public:
	std::vector <int> checkSaveButton
		(std::vector <int> mouseRows, std::vector <int> mouseCols)
	{	
		std::vector<int> result;
		if(mouseRows.size() != mouseCols.size()){
			return result; 
		}

		for(int i = 0; i < mouseRows.size(); ++i){
			int r = mouseRows[i];
			int c = mouseCols[i];
			if((r < 20 || 39 < r) || (c < 50 || 99 < c)){
				continue;
			}
			result.push_back(i);
		}
		return result;
	}
};
高得点の人のコードを眺めた感想

条件と戻り値への追加を、逆の方法で書いてる人がほとんどでした。

自分はなぜ上のように書いたんだっけ・・・。書き直すと、こうですね。

if( 21 < r && r < 38 && 49 < c && c < 100){
	result.push_back(i);
}

また、わざわざ変数を作らず、mouseRows[i]、mouseCols[i]を直接使う人が多いようでした。

そういえば、問題文に明示された制約をチェックするコードは書く必要ないんですね(上でいうと、2つのvectorのサイズが同じかをチェックする処理のことです)。