概要
N 個の扉があるダンジョンを探検している。
ダンジョンには赤、緑、白の三種類の鍵がある。
それぞれの扉には赤い鍵穴と緑の鍵穴がそれぞれ 0 個以上付いていて、赤い鍵は赤い鍵穴に、緑の鍵は緑の鍵穴にのみ挿さる。
白い鍵はどちらの鍵穴にも指すことができる。
また、鍵は再利用可能である。
それぞれの鍵の所持数が与えられるので、開けることのできる扉の数を求めよ。
解法
全ての扉について、開けることができるかどうかを調べることで解くことができます。
コード
#define REP( i, m, n ) for ( int i = (int)( m ); i < (int)( n ); ++i ) class KeyDungeonDiv2 { public: int countDoors( vector <int> doorR, vector <int> doorG, vector <int> keys ) { const int N = doorR.size(); int res = 0; REP( i, 0, N ) { res += max( 0, doorR[i] - keys[0] ) + max( 0, doorG[i] - keys[1] ) <= keys[2]; } return res; } };