Problem p03599 (C++)

Buggy submission (status: Runtime Error):
#include <algorithm>
#include <complex>
#include <cstdlib>
#include <ctime>
#include <iomanip>
#include <iostream>
#include <limits>
#include <map>
#include <math.h>
#include <numeric>
#include <queue>
#include <random>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <time.h>
#include <type_traits>
#include <vector>

using namespace std;
#define SAY_YES cout << "YES" << endl;
#define SAY_Yes cout << "Yes" << endl;
#define SAY_NO cout << "NO" << endl;
#define SAY_No cout << "No" << endl;
#define IFYES(TRUE_OR_FALSE)                                                   \
  if (TRUE_OR_FALSE) {                                                         \
    cout << "YES" << endl;                                                     \
  } else {                                                                     \
    cout << "NO" << endl;                                                      \
  }
#define IFYes(TRUE_OR_FALSE)                                                   \
  if (TRUE_OR_FALSE) {                                                         \
    cout << "Yes" << endl;                                                     \
  } else {                                                                     \
    cout << "No" << endl;                                                      \
  }
#define IFyes(TRUE_OR_FALSE)                                                   \
  if (TRUE_OR_FALSE) {                                                         \
    cout << "yes" << endl;                                                     \
  } else {                                                                     \
    cout << "no" << endl;                                                      \
  }
#define DEBUG_OUTPUT_ARRAY(XXX, ONE)                                           \
  for (int i = 0; i < (ONE); i++) {                                            \
    cout << "DEBUG: i = " << i << " -> " << XXX[i] << endl;                    \
  }
#define DEBUG_OUTPUT_ARRAY2(XXX, ONE, TWO)                                     \
  for (int i = 0; i < (ONE); i++) {                                            \
    cout << "<<< i = " << i << " >>>" << endl;                                 \
    for (int j = 0; j < (TWO); j++) {                                          \
      cout << "DEBUG: j = " << j << " -> " << XXX[i][j] << endl;               \
    }                                                                          \
  }
#define DEBUG_OUTPUT_ARRAY2_BOX(XXX, ONE, TWO)                                 \
  for (int i = 0; i < (ONE); i++) {                                            \
    cout << i << "  ";                                                         \
    for (int j = 0; j < (TWO); j++) {                                          \
      cout << XXX[i][j] << " ";                                                \
    }                                                                          \
    cout << endl;                                                              \
  }

typedef pair<long long int, long long int> pll;

const long long int mod = 1000000007;
const long long int INF = 1e18;
const long double PI = 3.14159265358979323;

long long int A, B, C, D, E, F;
bool water[3005] = {}, sugar[3005] = {};

int main() {
  cout << fixed << setprecision(18);
  cin >> A >> B >> C >> D >> E >> F;
  water[0] = true;
  sugar[0] = true;
  A *= 100;
  B *= 100;
  for (long long int i = 0; i < 3000; i++) {
    water[i + A] |= water[i];
    water[i + B] |= water[i];

    sugar[i + C] |= sugar[i];
    sugar[i + D] |= sugar[i];
  }
  pll tmp = {A, 0};
  for (long long int i = 100; i <= F; i += 100) {
    for (long long int j = 0; j + i <= F; j++) {
      if (!water[i] || !sugar[j] || i * E / 100 < j) {
        continue;
      }
      if (tmp.second * i < j * tmp.first) {
        tmp = {i, j};
      }
    }
  }
  cout << tmp.first + tmp.second << " " << tmp.second << endl;
}


Fixed submission:
#include <algorithm>
#include <complex>
#include <cstdlib>
#include <ctime>
#include <iomanip>
#include <iostream>
#include <limits>
#include <map>
#include <math.h>
#include <numeric>
#include <queue>
#include <random>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <time.h>
#include <type_traits>
#include <vector>

using namespace std;
#define SAY_YES cout << "YES" << endl;
#define SAY_Yes cout << "Yes" << endl;
#define SAY_NO cout << "NO" << endl;
#define SAY_No cout << "No" << endl;
#define IFYES(TRUE_OR_FALSE)                                                   \
  if (TRUE_OR_FALSE) {                                                         \
    cout << "YES" << endl;                                                     \
  } else {                                                                     \
    cout << "NO" << endl;                                                      \
  }
#define IFYes(TRUE_OR_FALSE)                                                   \
  if (TRUE_OR_FALSE) {                                                         \
    cout << "Yes" << endl;                                                     \
  } else {                                                                     \
    cout << "No" << endl;                                                      \
  }
#define IFyes(TRUE_OR_FALSE)                                                   \
  if (TRUE_OR_FALSE) {                                                         \
    cout << "yes" << endl;                                                     \
  } else {                                                                     \
    cout << "no" << endl;                                                      \
  }
#define DEBUG_OUTPUT_ARRAY(XXX, ONE)                                           \
  for (int i = 0; i < (ONE); i++) {                                            \
    cout << "DEBUG: i = " << i << " -> " << XXX[i] << endl;                    \
  }
#define DEBUG_OUTPUT_ARRAY2(XXX, ONE, TWO)                                     \
  for (int i = 0; i < (ONE); i++) {                                            \
    cout << "<<< i = " << i << " >>>" << endl;                                 \
    for (int j = 0; j < (TWO); j++) {                                          \
      cout << "DEBUG: j = " << j << " -> " << XXX[i][j] << endl;               \
    }                                                                          \
  }
#define DEBUG_OUTPUT_ARRAY2_BOX(XXX, ONE, TWO)                                 \
  for (int i = 0; i < (ONE); i++) {                                            \
    cout << i << "  ";                                                         \
    for (int j = 0; j < (TWO); j++) {                                          \
      cout << XXX[i][j] << " ";                                                \
    }                                                                          \
    cout << endl;                                                              \
  }

typedef pair<long long int, long long int> pll;

const long long int mod = 1000000007;
const long long int INF = 1e18;
const long double PI = 3.14159265358979323;

long long int A, B, C, D, E, F;
bool water[13005] = {}, sugar[13005] = {};

int main() {
  cout << fixed << setprecision(18);
  cin >> A >> B >> C >> D >> E >> F;
  water[0] = true;
  sugar[0] = true;
  A *= 100;
  B *= 100;
  for (long long int i = 0; i < 3000; i++) {
    water[i + A] |= water[i];
    water[i + B] |= water[i];

    sugar[i + C] |= sugar[i];
    sugar[i + D] |= sugar[i];
  }
  pll tmp = {A, 0};
  for (long long int i = 100; i <= F; i += 100) {
    for (long long int j = 0; j + i <= F; j++) {
      if (!water[i] || !sugar[j] || i * E / 100 < j) {
        continue;
      }
      if (tmp.second * i < j * tmp.first) {
        tmp = {i, j};
      }
    }
  }
  cout << tmp.first + tmp.second << " " << tmp.second << endl;
}