SRM 508 Round 1(?) div2 easy CandyShop

方針

素直に調べる。

雑感

何で Round 1 なの?

回答例

#include <sstream>
#include <string>
#include <vector>
#include <map>
#include <algorithm>
#include <iostream>
#include <utility>
#include <set>
#include <cctype>
#include <queue>
#include <stack>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <iterator>


using namespace std;


class CandyShop{
  vector<vector<bool> > ok;
  size_t n;

public:
  int countProbablePlaces(vector <int> x, vector <int> y, vector <int> r){
    n = x.size();

    const size_t oksize = 500;
    const size_t o = oksize / 2;
    ok.clear();
    ok.resize(oksize, vector<bool>(oksize, true));
    for(size_t i = 0; i < n; ++i){
      x[i] += o;
      y[i] += o;
    }

    for(size_t i = 0; i < n; ++i){
      for(size_t j = 0; j < oksize; ++j){
	for(size_t k = 0; k < oksize; ++k){
	  if(dist(x[i], y[i], j, k) > r[i]){
	    ok[j][k] = false;
	  }
	}
      }
    }

    int ret = 0;
    for(size_t j = 0; j < oksize; ++j){
      for(size_t k = 0; k < oksize; ++k){
	if(ok[j][k]){
	  ret++;
	}
      }
    }
    return ret;
  }

  int dist(int x, int y, int v, int w){
    //cout << x << " " << y << " " << v << " " << w << " " << abs(x-v) + abs(y-w) << endl;
    return abs(x-v) + abs(y-w);
  }




};