Problem p03601 (C++)

Buggy submission (status: Runtime Error):
#include <bits/stdc++.h>
using namespace std;
#define GET_MACRO(_1, _2, _3, NAME, ...) NAME
#define _repl(i, a, b) for (int i = (int)(a); i < (int)(b); i++)
#define _rep(i, n) _repl(i, 0, n)
#define rep(...) GET_MACRO(__VA_ARGS__, _repl, _rep)(__VA_ARGS__)
#define mp(a, b) make_pair((a), (b))
#define pb(a) push_back((a))
#define all(x) (x).begin(), (x).end()
#define uniq(x) sort(all(x)), (x).erase(unique(all(x)), end(x))
#define fi first
#define se second
#define dbg(...) _dbg(#__VA_ARGS__, __VA_ARGS__)
void _dbg(string) { cout << endl; }
template <class H, class... T> void _dbg(string s, H h, T... t) {
  int l = s.find(',');
  cout << s.substr(0, l) << " = " << h << ", ";
  _dbg(s.substr(l + 1), t...);
}
template <class T, class U>
ostream &operator<<(ostream &o, const pair<T, U> &p) {
  o << "(" << p.fi << "," << p.se << ")";
  return o;
}
template <class T> ostream &operator<<(ostream &o, const vector<T> &v) {
  o << "[";
  for (T t : v) {
    o << t << ",";
  }
  o << "]";
  return o;
}

#define INF 1120000000
#define int long
signed main() {
  int a, b, c, d, e, f;
  cin >> a >> b >> c >> d >> e >> f;

  int t = 0, u = 0;

  rep(i, 31) rep(j, 31) {
    if (100 * a * i + 100 * b * j > f)
      continue;
    int cap = min(e * (a * i + b * j), f - 100 * (a * i + b * j));
    for (int k = 0; k <= cap; k += c) {
      int dd = (cap - k) / d;
      dd *= d;
      int tot = 100 * a * i + 100 * b * j + k + dd;
      if (tot > f)
        continue;
      if (tot * u < (k + dd) * t) {
        t = tot;
        u = k + dd;
      }
    }
  }

  assert(t != 0);
  cout << t << " " << u << endl;

  return 0;
}


Fixed submission:
#include <bits/stdc++.h>
using namespace std;
#define GET_MACRO(_1, _2, _3, NAME, ...) NAME
#define _repl(i, a, b) for (int i = (int)(a); i < (int)(b); i++)
#define _rep(i, n) _repl(i, 0, n)
#define rep(...) GET_MACRO(__VA_ARGS__, _repl, _rep)(__VA_ARGS__)
#define mp(a, b) make_pair((a), (b))
#define pb(a) push_back((a))
#define all(x) (x).begin(), (x).end()
#define uniq(x) sort(all(x)), (x).erase(unique(all(x)), end(x))
#define fi first
#define se second
#define dbg(...) _dbg(#__VA_ARGS__, __VA_ARGS__)
void _dbg(string) { cout << endl; }
template <class H, class... T> void _dbg(string s, H h, T... t) {
  int l = s.find(',');
  cout << s.substr(0, l) << " = " << h << ", ";
  _dbg(s.substr(l + 1), t...);
}
template <class T, class U>
ostream &operator<<(ostream &o, const pair<T, U> &p) {
  o << "(" << p.fi << "," << p.se << ")";
  return o;
}
template <class T> ostream &operator<<(ostream &o, const vector<T> &v) {
  o << "[";
  for (T t : v) {
    o << t << ",";
  }
  o << "]";
  return o;
}

#define INF 1120000000
#define int long
signed main() {
  int a, b, c, d, e, f;
  cin >> a >> b >> c >> d >> e >> f;

  int t = 0, u = 0;

  rep(i, 31) rep(j, 31) {
    if (100 * a * i + 100 * b * j > f)
      continue;
    int cap = min(e * (a * i + b * j), f - 100 * (a * i + b * j));
    for (int k = 0; k <= cap; k += c) {
      int dd = (cap - k) / d;
      dd *= d;
      int tot = 100 * a * i + 100 * b * j + k + dd;
      if (tot > f)
        continue;
      if (tot * u <= (k + dd) * t) {
        t = tot;
        u = k + dd;
      }
    }
  }

  assert(t != 0);
  cout << t << " " << u << endl;

  return 0;
}