Problem p02733 (C++)

Buggy submission (status: Runtime Error):
#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define fw(p) for (int w = 0; w < (p); w++)
#define fx(p) for (int x = 0; x < (p); x++)
#define fy(p) for (int y = 0; y < (p); y++)
#define fz(p) for (int z = 0; z < (p); z++)
#define fyg(p, g) for (int y = (g); y < (p); y++)
#define fzg(p, g) for (int z = (g); z < (p); z++)
#define ce(d) cout << d << endl;
#define vecp(p)                                                                \
  int aa;                                                                      \
  cin >> aa;                                                                   \
  (p).push_back(aa);
#define vecpl(p)                                                               \
  long long aa;                                                                \
  cin >> aa;                                                                   \
  (p).push_back(aa);
#define vecps(p)                                                               \
  string aa;                                                                   \
  cin >> aa;                                                                   \
  (p).push_back(aa);
#define vecp2(p)                                                               \
  cin >> aa;                                                                   \
  (p).push_back(aa);
#define vecpl2(p)                                                              \
  long long a b;                                                               \
  cin >> ab;                                                                   \
  (p).push_back(ab);
#define vecps2(p)                                                              \
  string ab;                                                                   \
  cin >> ab;                                                                   \
  (p).push_back(ab);
#define sorts(c) sort((c).begin(), (c).end());
#define reverses(c) reverse((c).begin(), (c).end());
#define vec(b) vector<int>(b);
#define vecl(b) vector<long long>(b);
#define vecs(b) vector<string>(b);
#define pb(b, a) (b).push_back((a));
#define doublece(a, b) cout << (a) << ' ' << (b) << endl;
#define pairs(s) vector<pair<int, int>>(s);
#define pairsp(s)                                                              \
  int aa, bb;                                                                  \
  cin >> aa >> bb;                                                             \
  (s).push_back(make_pair(aa, bb));
#define MOD 1000000007
#define cey ce("Yes")
#define cen ce("No")
#define ceY ce("YES")
#define ceN ce("NO")

int choco[11][1001];
int main() {
  int H, W, K;
  cin >> H >> W >> K;
  vector<string> S;
  fx(H) { vecps(S); }

  fy(W) {
    choco[1][y + 1] = S[0][y] == '1' ? 1 : 0;
    fx(H - 1) {
      choco[x + 2][y + 1] = choco[x + 1][y + 1];
      if (S[x + 1][y] == '1') {
        choco[x + 2][y + 1]++;
      }
    }
  }
  int ans = INT_MAX;
  fx(2 << H) {
    vec(B);
    pb(B, 0);
    int y = x;
    int i = 0;
    while (y > 0) {
      if ((y & 1) == 1) {
        pb(B, i + 1);
      }
      i++;
      y >>= 1;
    }
    pb(B, H) int sum = B.size() - 2;
    vector<int> SUMS(B.size() - 1);
    fw(W + 1) {
      int flag = 0;
      fz(B.size() - 1) {
        SUMS[z] += choco[B[z + 1]][w] - choco[B[z]][w];
        if (w + 1 <= W &&
            SUMS[z] + choco[B[z + 1]][w + 1] - choco[B[z]][w + 1] > K) {
          flag = 1;
          if (w == 0) {
            flag = 2;
          }
          break;
        }
      }
      if (flag > 0) {
        sum++;
        if (flag == 2) {
          sum = H * W;
        }
        SUMS = vector<int>(B.size() - 1, 0);
      }
    }

    ans = min(ans, sum);
  }
  ce(ans) return 0;
}


Fixed submission:
#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define fw(p) for (int w = 0; w < (p); w++)
#define fx(p) for (int x = 0; x < (p); x++)
#define fy(p) for (int y = 0; y < (p); y++)
#define fz(p) for (int z = 0; z < (p); z++)
#define fyg(p, g) for (int y = (g); y < (p); y++)
#define fzg(p, g) for (int z = (g); z < (p); z++)
#define ce(d) cout << d << endl;
#define vecp(p)                                                                \
  int aa;                                                                      \
  cin >> aa;                                                                   \
  (p).push_back(aa);
#define vecpl(p)                                                               \
  long long aa;                                                                \
  cin >> aa;                                                                   \
  (p).push_back(aa);
#define vecps(p)                                                               \
  string aa;                                                                   \
  cin >> aa;                                                                   \
  (p).push_back(aa);
#define vecp2(p)                                                               \
  cin >> aa;                                                                   \
  (p).push_back(aa);
#define vecpl2(p)                                                              \
  long long a b;                                                               \
  cin >> ab;                                                                   \
  (p).push_back(ab);
#define vecps2(p)                                                              \
  string ab;                                                                   \
  cin >> ab;                                                                   \
  (p).push_back(ab);
#define sorts(c) sort((c).begin(), (c).end());
#define reverses(c) reverse((c).begin(), (c).end());
#define vec(b) vector<int>(b);
#define vecl(b) vector<long long>(b);
#define vecs(b) vector<string>(b);
#define pb(b, a) (b).push_back((a));
#define doublece(a, b) cout << (a) << ' ' << (b) << endl;
#define pairs(s) vector<pair<int, int>>(s);
#define pairsp(s)                                                              \
  int aa, bb;                                                                  \
  cin >> aa >> bb;                                                             \
  (s).push_back(make_pair(aa, bb));
#define MOD 1000000007
#define cey ce("Yes")
#define cen ce("No")
#define ceY ce("YES")
#define ceN ce("NO")

int choco[11][1001];
int main() {
  int H, W, K;
  cin >> H >> W >> K;
  vector<string> S;
  fx(H) { vecps(S); }

  fy(W) {
    choco[1][y + 1] = S[0][y] == '1' ? 1 : 0;
    fx(H - 1) {
      choco[x + 2][y + 1] = choco[x + 1][y + 1];
      if (S[x + 1][y] == '1') {
        choco[x + 2][y + 1]++;
      }
    }
  }
  int ans = INT_MAX;
  fx(2 << (H - 1)) {
    vec(B);
    pb(B, 0);
    int y = x;
    int i = 0;
    while (y > 0) {
      if ((y & 1) == 1) {
        pb(B, i + 1);
      }
      i++;
      y >>= 1;
    }
    pb(B, H) int sum = B.size() - 2;
    vector<int> SUMS(B.size() - 1);
    fw(W + 1) {
      int flag = 0;
      fz(B.size() - 1) {
        SUMS[z] += choco[B[z + 1]][w] - choco[B[z]][w];
        if (w + 1 <= W &&
            SUMS[z] + choco[B[z + 1]][w + 1] - choco[B[z]][w + 1] > K) {
          flag = 1;
          if (w == 0) {
            flag = 2;
          }
          break;
        }
      }
      if (flag > 0) {
        sum++;
        if (flag == 2) {
          sum = H * W;
        }
        SUMS = vector<int>(B.size() - 1, 0);
      }
    }

    ans = min(ans, sum);
  }
  ce(ans) return 0;
}