WARush

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

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;
    }
};