WARush

SRMの結果とか、解けた問題のコードを書いていきます

SRM554 Div2 Easy " TheBrickTowerEasyDivTwo"

問題

赤色と青色のレンガを積み重ねて塔を作る。
赤と青のレンガは交互に積み重ねていかなくてはいけない。
一番下は赤と青どちらでもよい。

赤色と青色のレンガの数(redCount, redHeight)と高さ(redHeight, blueHeight)が与えられた時、
高さが異なる塔が何種類出来るかを返せ。

制約

1 <= redCount, redHeight, blueCount, blueHeight <= 50

考えた事

交互に乗せないといけないということは、赤の数と青の数の差は1以内でなければならないので、
赤 == 青 + 1,
赤 + 1 == 青,
赤 == 青
の3パターンを試す

コード
class TheBrickTowerEasyDivTwo {
public:
	int find(int redCount, int redHeight, int blueCount, int blueHeight){
		set<int> ts;
		int rc = redCount, rh = redHeight, bc = blueCount, bh = blueHeight;
		for( int i = 1; i <= rc && i - 1 <= bc; i++ ){
			int h = i * rh + (i-1) * bh;
			ts.insert( h );
		}
		for( int i = 1; i - 1 <= rc && i <= bc; i++ ){
			int h = (i-1) * rh + i * bh;
			ts.insert( h );
		}
		for( int i = 1; i <= rc && i <= bc; i++ ){
			int h = i * rh + i * bh;
			ts.insert( h );
		}

		return ts.size();
	}
}
事後

残念な事にbhをbcと書き間違えてWA
Sample通っちゃったからなー
さらにSystem Testも1問除いて全て通ってたっていうね