読者です 読者をやめる 読者になる 読者になる

SRM 588 Div2 Easy KeyDungeonDiv2

問題

N個のドアが有り各ドアには赤と緑の鍵穴が複数ついている.赤の鍵は赤の鍵穴に,緑の鍵は緑の鍵穴にしか入れることは出来ない.白の鍵はどちらの鍵穴にも入れることが出来る.初期状態で赤緑白の鍵が与えられた時,ドアを開けることが出来る数を答えよ.

解答

やるだけ.赤と緑の鍵が足りなかったら白から拝借.白が負の数にならなければ,初期状態の鍵で開けることが出来る.

class KeyDungeonDiv2
{
public:
  int countDoors(vector <int> doorR, vector <int> doorG, vector <int> keys)
    {
      int n = doorR.size();
      int res = 0;
      for(int i = 0; i < n; i++){
        int r = keys[0];
        int g = keys[1];
        int w = keys[2];
        if (r < doorR[i]) {
          w -= doorR[i] - r;
          r = 0;
        }else{
          r -= doorR[i];
        }
        if (g < doorG[i]) {
          w -= doorG[i] - g;
          g = 0;
        }else{
          g -= doorG[i];
        }
        if (w >= 0){
          res++;
        }
      }
      return res;
    }
};