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

#include <algorithm>
#include <complex>
#include <cstdlib>
#include <ctime>
#include <iomanip>
#include <iostream>
#include <limits>
#include <locale>
#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 N, M, K, res = 0, X, H[200000], A[200200], B[200200];
long long int memo[200] = {};
bool bad[200200] = {};
long long int h[300200] = {};
string S;
long long int pl[300200] = {}, mi[300200] = {};
int main() {
  cout << fixed << setprecision(18);
  cin >> N;
  for (long long int i = 1; i <= N; i++) {
    cin >> A[i];
    pl[i] = i + A[i];
    mi[i] = -i + A[i];
  }

  for (long long int i = N - 1; i >= 1; i--) {
    if (mi[i + 1] <= 0 && -mi[i + 1] <= 300000)
      h[-mi[i + 1]]++;
    if (pl[i] <= 300000)
      res += h[pl[i]];
  }
  cout << res << endl;
}


Error: 0

Fixed submission:

#include <algorithm>
#include <complex>
#include <cstdlib>
#include <ctime>
#include <iomanip>
#include <iostream>
#include <limits>
#include <locale>
#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 N, M, K, res = 0, X, H[200000], A[200200], B[200200];
long long int memo[200] = {};
bool bad[200200] = {};
long long int h[200200] = {};
string S;
long long int pl[200200] = {}, mi[200200] = {};
int main() {
  cout << fixed << setprecision(18);
  cin >> N;
  for (long long int i = 1; i <= N; i++) {
    cin >> A[i];
    pl[i] = i + A[i];
    mi[i] = -i + A[i];
  }

  for (long long int i = N - 1; i >= 1; i--) {
    if (mi[i + 1] <= 0)
      h[-mi[i + 1]]++;
    res += h[pl[i]];
  }
  cout << res << endl;
}