SRM 540 Div2 Easy RandomColoringDiv2

問題

フリスビーの上面と下面に色を塗る.色はR, G, Bで表され,上面と下面のRGB値が次のようになるように色を塗る.上面のRGB値をR, G, B,下面のRGB値をR', G', B'とした時,d1 <= |R-R'|, |G-G'|, |B-B'| <= d2.上面のRGB値がわかっている時下面に塗れる色の種類を答えよ.

解答

RGB値を前探索し,条件に合う回数を数える.

class RandomColoringDiv2 {
public:
  int getCount(int maxR, int maxG, int maxB, int startR, int startG, int startB, int d1, int d2) {
    int res = 0;
    int r,g,b;
    for(r = 0; r < maxR; r++){
      for(g = 0; g < maxG; g++){
        for(b = 0; b < maxB; b++){
          if(abs(r-startR) <= d2 && abs(g-startG) <= d2
             && abs(b-startB) <= d2 ){
            if((abs(r-startR) >= d1 || abs(g-startG) >= d1
                || abs(b-startB) >= d1))
              // cout << "r:" << r << " g:" << g << " b:" << b << endl;
              res++;
          }
        }
      }
    }
	
    return res;
  }