Problem p03404 (C++)

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

#define ll long long
#define str string
#define pii pair<int, int>
#define pll pair<ll, ll>
#define fi first
#define se second

#define vc vector<char>
#define vvc vector<vc>
#define vi vector<int>
#define vll vector<ll>
#define vvi vector<vi>
#define vvll vector<vll>
#define vvvll vector<vvll>
#define vs vector<str>
#define vvs vector<vs>
#define vpii vector<pii>
#define vvpii vector<vpii>
#define vpll vector<pll>
#define vvpll vector<vpll>
#define vb vector<bool>
#define vvb vector<vb>
#define rep(i, a, b) for (int i = (a); i < int(b); i++)
#define repi(i, a, b) for (int i = (a); i <= int(b); i++)

using namespace std;
ll INF = LONG_LONG_MAX;
ll mod = 1000000000 + 7;

template <typename T, typename L>
void read(vector<T> &_data, L &_size, bool _shift) {
  _data.resize(_size + (ll)_shift);
  for (ll i = (ll)_shift; i < _size + (ll)_shift; i++)
    cin >> _data[i];
}

template <typename T, typename L>
void read(vector<vector<T>> &_data, L &_rows, L &_cols, bool _shiftRows,
          bool _shiftCols) {
  _data.resize(_rows + (ll)_shiftRows);
  for (ll i = 0; i < _rows + (ll)_shiftRows; i++)
    _data[i].resize(_cols + (ll)_shiftCols);
  for (ll i = (ll)_shiftRows; i < _rows + (ll)_shiftRows; i++)
    for (ll j = (ll)_shiftCols; j < _cols + (ll)_shiftCols; j++)
      cin >> _data[i][j];
}

template <typename T> void write(vector<T> &_data, bool _shift) {
  for (ll i = (ll)_shift; i < _data.size(); i++)
    cout << _data[i] << " ";
  cout << endl;
}

// TODO: SOLUTION

void sol(ll a, ll b, char ca, char cb) {

  vvc s(100, vc(100, cb));
  b--;

  int i = 0;
  int j = 0;

  while (b > 0) {
    int cx = 4 * i + 2;
    int cy = 5 * j + 2;

    for (int x = cx - 1; x <= cx + 1; x++) {
      for (int y = cy - 1; y <= cy + 1; y++) {
        if (y != cy || x != cx) {
          s[x][y] = ca;
        }
      }
    }

    j++;
    if (j == 20) {
      i++;
      j = 0;
    }
    b--;
    a--;
  }
  while (a > 0) {
    int cx = 4 * i + 2;
    int cy = 5 * j + 2;

    s[cx][cy] = ca;
    j++;
    if (j == 25) {
      i++;
      j = 0;
    }
    a--;
  }

  cout << 100 << " " << 100 << endl;
  for (auto z : s) {
    for (auto c : z) {
      cout << c;
    }
    cout << endl;
  }
}

void solve() {
  ll a, b;
  cin >> a >> b;
  if (a > b)
    sol(a, b, '.', '#');
  else
    sol(b, a, '#', '.');
}

int main() {

  // TODO: Set value of this variable manually
  bool _multipleTestCases = false;

  if (_multipleTestCases) {
    ll t;
    cin >> t;
    while (t--)
      solve();
  } else {
    solve();
  }

  return 0;
}

Fixed submission:
#include <bits/stdc++.h>

#define ll long long
#define str string
#define pii pair<int, int>
#define pll pair<ll, ll>
#define fi first
#define se second

#define vc vector<char>
#define vvc vector<vc>
#define vi vector<int>
#define vll vector<ll>
#define vvi vector<vi>
#define vvll vector<vll>
#define vvvll vector<vvll>
#define vs vector<str>
#define vvs vector<vs>
#define vpii vector<pii>
#define vvpii vector<vpii>
#define vpll vector<pll>
#define vvpll vector<vpll>
#define vb vector<bool>
#define vvb vector<vb>
#define rep(i, a, b) for (int i = (a); i < int(b); i++)
#define repi(i, a, b) for (int i = (a); i <= int(b); i++)

using namespace std;
ll INF = LONG_LONG_MAX;
ll mod = 1000000000 + 7;

template <typename T, typename L>
void read(vector<T> &_data, L &_size, bool _shift) {
  _data.resize(_size + (ll)_shift);
  for (ll i = (ll)_shift; i < _size + (ll)_shift; i++)
    cin >> _data[i];
}

template <typename T, typename L>
void read(vector<vector<T>> &_data, L &_rows, L &_cols, bool _shiftRows,
          bool _shiftCols) {
  _data.resize(_rows + (ll)_shiftRows);
  for (ll i = 0; i < _rows + (ll)_shiftRows; i++)
    _data[i].resize(_cols + (ll)_shiftCols);
  for (ll i = (ll)_shiftRows; i < _rows + (ll)_shiftRows; i++)
    for (ll j = (ll)_shiftCols; j < _cols + (ll)_shiftCols; j++)
      cin >> _data[i][j];
}

template <typename T> void write(vector<T> &_data, bool _shift) {
  for (ll i = (ll)_shift; i < _data.size(); i++)
    cout << _data[i] << " ";
  cout << endl;
}

// TODO: SOLUTION

void sol(ll a, ll b, char ca, char cb) {

  vvc s(100, vc(100, cb));
  b--;

  int i = 0;
  int j = 0;

  while (b > 0) {
    int cx = 4 * i + 2;
    int cy = 5 * j + 2;

    for (int x = cx - 1; x <= cx + 1; x++) {
      for (int y = cy - 1; y <= cy + 1; y++) {
        if (y != cy || x != cx) {
          s[x][y] = ca;
        }
      }
    }

    j++;
    if (j == 20) {
      i++;
      j = 0;
    }
    b--;
    a--;
  }
  while (a > 0) {
    int cx = 4 * i + 2;
    int cy = 5 * j + 2;

    s[cx][cy] = ca;
    j++;
    if (j == 20) {
      i++;
      j = 0;
    }
    a--;
  }

  cout << 100 << " " << 100 << endl;
  for (auto z : s) {
    for (auto c : z) {
      cout << c;
    }
    cout << endl;
  }
}

void solve() {
  ll a, b;
  cin >> a >> b;
  if (a > b)
    sol(a, b, '.', '#');
  else
    sol(b, a, '#', '.');
}

int main() {

  // TODO: Set value of this variable manually
  bool _multipleTestCases = false;

  if (_multipleTestCases) {
    ll t;
    cin >> t;
    while (t--)
      solve();
  } else {
    solve();
  }

  return 0;
}