Problem p02695 (C++) — buggy submission, verdict: Runtime Error

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
// #include <boost/multiprecision/cpp_ll.hpp>
// typedef boost::multiprecision::cpp_ll ll;
typedef long double dd;
#define i_7 (ll)(1E9 + 7)
// #define i_7 998244353
#define i_5 i_7 - 2
ll mod(ll a) {
  ll c = a % i_7;
  if (c >= 0)
    return c;
  return c + i_7;
}
typedef pair<ll, ll> l_l;
ll inf = (ll)1E18;
#define rep(i, l, r) for (ll i = l; i <= r; i++)
#define pb push_back
ll max(ll a, ll b) {
  if (a < b)
    return b;
  else
    return a;
}
ll min(ll a, ll b) {
  if (a > b)
    return b;
  else
    return a;
}
void Max(ll &pos, ll val) { pos = max(pos, val); } // Max(dp[n],dp[n-1]);
void Min(ll &pos, ll val) { pos = min(pos, val); }
void Add(ll &pos, ll val) { pos = mod(pos + val); }
dd EPS = 1E-9;
#define endl "\\n"
#define fastio                                                                 \\
  ios::sync_with_stdio(false);                                                 \\
  cin.tie(0);                                                                  \\
  cout.tie(0);

ll n, m, q;
ll a[50], b[50], c[50], d[50];
ll ans;
void Rep(vector<ll> v) {
  if ((ll)v.size() == n) {
    ll sum = 0;
    rep(j, 0, q - 1) {
      if (v[b[j] - 1] - v[a[j] - 1] == c[j]) {
        sum += d[j];
      }
    }
    ans = max(ans, sum);
    return;
  }

  if ((ll)v.size() == 0) {
    rep(i, 1, m) {
      v.pb(i);
      Rep(v);
      v.pop_back();
    }
    return;
  }
  rep(i, v[v.size() - 1], m) {
    v.pb(i);
    Rep(v);
    v.pop_back();
  }
}

int main() {
  cin >> n >> m >> q;

  rep(i, 0, q - 1) { cin >> a[i] >> b[i] >> c[i] >> d[i]; }
  vector<ll> v;
  ans = 0;
  Rep(v);

  cout << ans << endl;
  return 0;
}


Error: 0

Fixed submission:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
// #include <boost/multiprecision/cpp_ll.hpp>
// typedef boost::multiprecision::cpp_ll ll;
typedef long double dd;
#define i_7 (ll)(1E9 + 7)
// #define i_7 998244353
#define i_5 i_7 - 2
ll mod(ll a) {
  ll c = a % i_7;
  if (c >= 0)
    return c;
  return c + i_7;
}
typedef pair<ll, ll> l_l;
ll inf = (ll)1E18;
#define rep(i, l, r) for (ll i = l; i <= r; i++)
#define pb push_back
ll max(ll a, ll b) {
  if (a < b)
    return b;
  else
    return a;
}
ll min(ll a, ll b) {
  if (a > b)
    return b;
  else
    return a;
}
void Max(ll &pos, ll val) { pos = max(pos, val); } // Max(dp[n],dp[n-1]);
void Min(ll &pos, ll val) { pos = min(pos, val); }
void Add(ll &pos, ll val) { pos = mod(pos + val); }
dd EPS = 1E-9;
#define endl "\\n"
#define fastio                                                                 \\
  ios::sync_with_stdio(false);                                                 \\
  cin.tie(0);                                                                  \\
  cout.tie(0);

vector<vector<ll>> V;
ll n, m, q;
ll a[50], b[50], c[50], d[50];
void Rep(vector<ll> v) {
  if (v.size() == n) {
    V.pb(v);
    return;
  }

  if (v.size() == 0) {
    rep(i, 1, m) {
      v.pb(i);
      Rep(v);
      v.pop_back();
    }
    return;
  }
  if (v[v.size() - 1] == m) {
    return;
  }
  rep(i, v[v.size() - 1], m) {
    v.pb(i);
    Rep(v);
    v.pop_back();
  }
}

int main() {
  fastio cin >> n >> m >> q;
  rep(i, 0, q - 1) { cin >> a[i] >> b[i] >> c[i] >> d[i]; }
  vector<ll> v;
  Rep(v);
  ll ans = 0;
  rep(i, 0, V.size() - 1) {
    ll sum = 0;
    rep(j, 0, q - 1) {
      if (V[i][b[j] - 1] - V[i][a[j] - 1] == c[j]) {
        sum += d[j];
      }
    }

    ans = max(ans, sum);
  }
  cout << ans << endl;
  return 0;
}