SRM 508 Easy (250) CandyShop

250なのに手こずってしまった.
全てのX[i], Y[i]からR[i]で行ける地点をboolの2次元配列として用意する.
初めは全てtrueに設定しi=0..n-1まで行けない地点をfalseで埋めていく.
最終的なtrueな個数を求めればOK.

# 最初,2次元配列のサイズが小さくてエラーになってた

class CandyShop {
public:
  int countProbablePlaces(vector <int> X, vector <int> Y, vector <int> R) {
    int res = 0;
    int w = 450;
    int h = w;
    int offset = w/2;

    vector<vector<bool> > m(h, vector<bool>(h, true));
    int i,j,l;
    for(l=0; l < X.size(); l++){
      int x = Y[l] + offset;
      int y =X[l] + offset;
      for(i = 0; i < h; i++)
        for(j = 0; j < w; j++) if(!((abs(x-j) + abs(y-i)) <= R[l] && m[i][j])){
            m[i][j] = false;
          }
    }
    for(i = 0; i < h; i++)
      for(j = 0; j < w; j++) if(m[i][j]){
          res++;
          // debug(i) debug(j)
        }
    return res;
  }
};