SRM588 Div2 Easy "KeyDungeonDiv2"
問題
http://community.topcoder.com/stat?c=problem_statement&pm=12724
訳
あなたはダンジョンを冒険している。このダンジョンで、いくつかの鍵のかかったドアを見つけた。それぞれのドアには0個以上の赤と緑の鍵穴が付いていた。ドアを開けるためには、全ての鍵穴に適した鍵を差し込まなくてはならない。一度ドアを開ければ、差し込んだ鍵を抜き、それを別のドアを開けるために、再び使うことが出来る。
あなたは赤・緑・白の3種類の鍵を持っていた。赤い鍵は、赤い鍵穴に差し込む事ができ、緑の鍵は、緑の鍵穴に差し込む事ができる。そして白い鍵は、赤と緑の両方の鍵穴に差し込む事ができる。
あなたはdoorRとdoorGというintが与えられる。2つのintは、要素を同じ数だけ持っている。i番目のドアは、赤い鍵穴がdoorR[i]、緑の鍵穴がdoorG[i]だけ設置されている事を示す。
あなたは3つの要素を持つint[] keysが与えられる。keys[0]は赤い鍵の数、key[1]は緑の鍵の数、key[2]は白い鍵の数を示す。
あなたが開ける事ができるドアの数を返せ。
制約
1 <= ドアの数 <= 50
1 <= 各ドアの鍵穴の数 <= 100
考えた事
まあやるだけ(てこずってしまったが・・)
ソースコード
class KeyDungeonDiv2 { public: int countDoors(vector <int> doorR, vector <int> doorG, vector <int> keys){ int N = doorR.size(); int ans = 0; for( int i = 0; i < N; i++ ){ int remW = keys[2]; if( doorR[i] > keys[0] + remW ) continue; remW -= max(doorR[i] - keys[0], 0); if( doorG[i] > keys[1] + remW ) continue; ans++; } return ans; } };