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


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

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

#define resize(A) A.resize(unique(A.begin(), A.end()) - A.begin())
#define pb push_back
#define MAX 200005

#define endl "\\n" // Take care in case of interactive problems

long long int mod = 998244353;
long long int MOD = 1e9 + 7;
long long int INF = 1e17;

////////////////////////////////////////////// sieve
/////////////////////////////////////////////////////////////////////
/*
 bool C[MAX];

 void sieve()
 {
    long long int i,j;
    for(i=2;i<MAX;i++)
    {
      if(!C[i])
     {


        for(j=2*i;j<MAX;j=j+i)
        {
            C[j]=true;

        }
      }

    }

 }*/

//////////////////////////////////////////////////////////D-S-U/////////////////////////////////////////////////////////
/*long long int parent[MAX];
long long int size[MAX];
void initialise()
{ //cout<<MAX<<" ";
    for(long  long int i=0;i<MAX;i++)
    {
        parent[i]=i;
        //cout<<i<<" ";
        size[i]=1;
    }
}
long long int  root(long long int x)
{
    while(x!=parent[x])
    {
        parent[x]=parent[parent[x]];
        x=parent[x];
    }
    return x;
}


void union1(long long int x,long long int y)
{
    if(size[x]>=size[y])
    {
        size[x]+=size[y];
        parent[y]=x;

    }
    else
    {
        size[y]+=size[x];
        parent[x]=y;
    }
}*/
//////////////////////////////////////////////////////MODPOWER//////////////////////////////////////////////////////////

long long int modulo(long long int a, long long int b, long long int n) {
  long long int x = 1, y = a % n;
  while (b > 0) {
    if (b % 2 == 1) {
      x = (x * y) % n; // multiplying with base
    }
    y = (y * y) % n; // squaring the base
    b /= 2;
  }
  return x % n;
}

////////////////////////////////////////////////BIT/////////////////////////////////////////////////////////////////////
/*long long int bit[MAX+1]={0};
long long int query(long long int in,long long int n)
{
   //in=in+1;
   long long int sum=0;
   if(in==0)
       return 0;
   while(in>0)
   {
     sum=sum+bit[in];

       in=in-(in&(-in));
   }
   return sum;
}
void update(long long int in,long long int n,long long int val)
{
   // in=in+1;

   while(in<=n)
   {
      // cout<<in<<" ";
       bit[in]+=val;
       in=in+ (in &(-in));
   }
}



*/

//////////////////////////////////////////////// DFS
/////////////////////////////////////////////////////////////////////
/*
  bool visited[MAX];
 long long int parent[MAX];
 long long int dist[MAX];


void dfs(vector<long long int>adj[],long long int i,long long int k)
{
    visited[i]=true;
    for(auto j:adj[i])
    {
        if(!visited[j])
        {
            dist[j]=dist[i]+1;
            parent[j]=i;
            dfs(adj,j,k);

        }

    }
}
 */

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

// long long int R[4]={1,0,-1,0};
// long long int C[4]={0,1,0,-1};

// NEVER GONNA GIVE YOU UP, NEVER GONNA LET YOU DOWN!
long long int A[15];
long long int C[15][15][25];
long long int xr = 0;
void fun(long long int A[], long long int n, long long int i, long long int m,
         long long int l) {

  long long int ans = 0;
  int p = 0;
  for (int i1 = 2; i1 <= n; i1++) {
    if (A[i1] < A[i1 - 1] || A[i1] > m || A[i1] <= 0 || A[1] > m || A[1] <= 0)
      p = 1;
  }
  for (int i1 = 1; i1 <= n; i1++) {
    for (int j1 = i1 + 1; j1 <= n; j1++) {
      if (A[j1] >= A[i1])
        ans += C[i1][j1][A[j1] - A[i1]];
    }
  }
  if (p == 0)
    xr = max(xr, ans);

  if (i == n + 1)
    return;

  for (int j = l; j <= m; j++) {
    A[i] = j;
    fun(A, n, i + 1, m, j);
  }
}

int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  long long int sum, d, i, w, j,
      k = 0, l = 0, r = 0, m, n, c, p = 0, cnt = 0, cnt1 = 0, x, y = 0, z = 0,
      a, b, low, mid, high, ans = 0, ans1 = 0, maxi = 0, mini = INF, t1, x1, y1,
      t, o, i1;
  string s, s1, s2, s3;
  long long qt, xxx;
  char kk, aa, bb, jj;

  cin >> n >> m >> t;
  xr = 0;
  while (t--) {
    cin >> a >> b >> c >> d;
    C[a][b][c] += d;
  }

  for (i = 1; i <= n; i++) {
    k = min(i, m);
    A[i] = k;
  }

  fun(A, n, 1, m, 1);
  cout << xr << endl;
}


Error: -11

Fixed submission:

#pragma GCC optimize "-O3"
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#include <functional>
#include <iostream>
using namespace __gnu_pbds;
using namespace std;
// Declaring ordered_set
typedef tree<long long int, null_type, less<long long int>, rb_tree_tag,
             tree_order_statistics_node_update>
    ordered_set;
// https://www.geeksforgeeks.org/order_of_key-in-c/

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

#define resize(A) A.resize(unique(A.begin(), A.end()) - A.begin())
#define pb push_back
#define MAX 200005

#define endl "\\n" // Take care in case of interactive problems

long long int mod = 998244353;
long long int MOD = 1e9 + 7;
long long int INF = 1e17;

////////////////////////////////////////////// sieve
/////////////////////////////////////////////////////////////////////
/*
 bool C[MAX];

 void sieve()
 {
    long long int i,j;
    for(i=2;i<MAX;i++)
    {
      if(!C[i])
     {


        for(j=2*i;j<MAX;j=j+i)
        {
            C[j]=true;

        }
      }

    }

 }*/

//////////////////////////////////////////////////////////D-S-U/////////////////////////////////////////////////////////
/*long long int parent[MAX];
long long int size[MAX];
void initialise()
{ //cout<<MAX<<" ";
    for(long  long int i=0;i<MAX;i++)
    {
        parent[i]=i;
        //cout<<i<<" ";
        size[i]=1;
    }
}
long long int  root(long long int x)
{
    while(x!=parent[x])
    {
        parent[x]=parent[parent[x]];
        x=parent[x];
    }
    return x;
}


void union1(long long int x,long long int y)
{
    if(size[x]>=size[y])
    {
        size[x]+=size[y];
        parent[y]=x;

    }
    else
    {
        size[y]+=size[x];
        parent[x]=y;
    }
}*/
//////////////////////////////////////////////////////MODPOWER//////////////////////////////////////////////////////////

long long int modulo(long long int a, long long int b, long long int n) {
  long long int x = 1, y = a % n;
  while (b > 0) {
    if (b % 2 == 1) {
      x = (x * y) % n; // multiplying with base
    }
    y = (y * y) % n; // squaring the base
    b /= 2;
  }
  return x % n;
}

////////////////////////////////////////////////BIT/////////////////////////////////////////////////////////////////////
/*long long int bit[MAX+1]={0};
long long int query(long long int in,long long int n)
{
   //in=in+1;
   long long int sum=0;
   if(in==0)
       return 0;
   while(in>0)
   {
     sum=sum+bit[in];

       in=in-(in&(-in));
   }
   return sum;
}
void update(long long int in,long long int n,long long int val)
{
   // in=in+1;

   while(in<=n)
   {
      // cout<<in<<" ";
       bit[in]+=val;
       in=in+ (in &(-in));
   }
}



*/

//////////////////////////////////////////////// DFS
/////////////////////////////////////////////////////////////////////
/*
  bool visited[MAX];
 long long int parent[MAX];
 long long int dist[MAX];


void dfs(vector<long long int>adj[],long long int i,long long int k)
{
    visited[i]=true;
    for(auto j:adj[i])
    {
        if(!visited[j])
        {
            dist[j]=dist[i]+1;
            parent[j]=i;
            dfs(adj,j,k);

        }

    }
}
 */

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

// long long int R[4]={1,0,-1,0};
// long long int C[4]={0,1,0,-1};

// NEVER GONNA GIVE YOU UP, NEVER GONNA LET YOU DOWN!

map<pair<pa, long long int>, long long int> ma;
long long int A[15];
long long int B[15][15];
long long int C[15][15];
long long int xr;
void fun(long long int A[], long long int n, long long int i, long long int m) {
  if (i == n + 1)
    return;
  long long int ans = 0;
  for (int i1 = 1; i1 <= n; i1++) {
    for (int j1 = i1 + 1; j1 <= n; j1++) {
      if (B[i1][j1] == A[j1] - A[i1])
        ans += C[i1][j1];
    }
  }

  xr = max(xr, ans);
  for (int j = i; j <= m; j++) {
    A[i] = j;
    fun(A, n, i + 1, m);
  }
}

int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  long long int sum, d, i, w, j,
      k = 0, l = 0, r = 0, m, n, c, p = 0, cnt = 0, cnt1 = 0, x, y = 0, z = 0,
      a, b, low, mid, high, ans = 0, ans1 = 0, maxi = 0, mini = INF, t1, x1, y1,
      t, o, i1;
  string s, s1, s2, s3;
  long long qt, xxx;
  char kk, aa, bb, jj;

  cin >> n >> m >> t;
  for (i = 0; i <= n; i++) {
    for (j = 0; j <= n; j++) {
      B[a][b] = INF;
      C[a][b] = 0;
    }
  }
  while (t--) {
    cin >> a >> b >> c >> d;
    B[a][b] = c;
    C[a][b] = d;
  }

  for (i = 1; i <= n; i++) {
    A[i] = 1;
  }

  fun(A, n, 1, m);
  cout << xr << endl;
}