解いた問題

9/13/2012

SRM555 Div2 Easy

255

やるだけ。



int f(vector<string> v)
{
  int sum = 0;
  for (int i = 0; i < v.size(); ++i) {
    for (int j = 0; j < v[i].size(); ++j) {
      sum += v[i][j] == '1';
    }
  }
  return sum;
}

class XorBoardDivTwo {
public:
  int theMax(vector <string> B)
  {
    int mx = 0;

    const int H = B.size();
    const int W = B[0].size();

    for (int i = 0; i < H; ++i) {
      for (int j = 0; j < W; ++j) {
        for (int k = 0; k < W; ++k) B[i][k] = (B[i][k] == '0' ? '1' : '0');
        for (int k = 0; k < H; ++k) B[k][j] = (B[k][j] == '0' ? '1' : '0');
        mx = max(mx, f(B));
        for (int k = 0; k < W; ++k) B[i][k] = (B[i][k] == '0' ? '1' : '0');
        for (int k = 0; k < H; ++k) B[k][j] = (B[k][j] == '0' ? '1' : '0');
      }
    }

    return mx;
  }
};