Problem p02275 (C++)

Buggy submission (status: Runtime Error):
#include <algorithm> // next_permutation
#include <cmath>
#include <cstdio>
#include <iomanip>
#include <iostream>
#include <list>
#include <numeric> //accumulate
#include <queue>
#include <sstream>
#include <stack>
#include <string>
#include <vector>
// #include <unordered_map> //???????????\??¢??°
#include <fstream> //ifstream, ofstream

#define NDEBUG // NDEBUG???#include
               // <cassert>???????????????????????????????????´???assert?????????????????????????????????NDEBUG????????????????????¨
#include <cassert> //assert

using namespace std;

//???????????°??????TEST????????????????????¬???????????????????????????????????¢????????????
#define TEST //*******************************************************************************************************************************************
//?????????????????¨??§?????\????????????????????????????????°?????????????¨???????????????????dout???????????????????????§???????????¬??????????????????????????????????????????
//??????????????????????????????????????????????????????????§?CPU???????£??????????????????§???TLE?????????????????????????????????????????§????????¨???
//????????????????????????cerr????????£????????????????????????????????????
#ifdef TEST
#define dout cout
#else
stringstream dummy; //???????????°??????dout?????????????????????????????????
#define dout                                                                   \
  dummy.str("");                                                               \
  dummy.clear(stringstream::goodbit);                                          \
  dummy // dummy?????????????????????????????????????????¨?????¢?????¢???????????????
//???????????¨??????????????????goodbit?????????????????????????????¨???????????´????????????????????????????????¨?????°?????????????????§????????????????????????????????????
//http://d.hatena.ne.jp/linden/20060427/p1
#endif

//?¨??????????????????????????????????????????????????????´??????OUTPUT2TEXTFILE????????????????????¬???????????????????????????????????¢????????????
// #define OUTPUT2TEXTFILE
// //*******************************************************************************************************************************************
#ifdef OUTPUT2TEXTFILE
#define dout                                                                   \
  outputfile //??¨????????????TLE????????§?????????dout?????¨??¨??????????????¢????????????????????????????????????????????§????¨????????????´??????????????£??????????????????????¨?????????????????????????????????????????????§?????????????????????
// TEST??????????????????????????¨???outputfile??????????????????????????????
#define OUTPUTFILENAME "output.txt"
ofstream outputfile(OUTPUTFILENAME);
#define OutputFilePath                                                         \
  "/Users/Nag/Documents/Prgm/Test/DerivedData/Test/Build/Products/Debug/"      \
  "output.txt"
#endif

#define disp(A) dout << #A << " = " << (A) << endl
#define disP(A)                                                                \
  dout << setw(3) << (A) << " " // << setw(3) ??????????????\????????????
#define rep(i, a, n) for (int(i) = (a); (i) < (n); (i)++)

#define dispAll(A, n)                                                          \
  dout << #A << " = ";                                                         \
  rep(j, 0, (n)) { disP(A[j]); }                                               \
  dout << endl

typedef pair<int, int> pii;
typedef vector<int> vi;
typedef unsigned long long ll;

const int INF = 1e9 + 999;

int main() {
  const int a_max = 10;

  int N;
  cin >> N;

  int a[N];
  rep(i, 0, N) cin >> a[i];

  int c[a_max + 1]; // a[]???????´???????????????°???????????????????????¨
  int output[N];    // a[]????????????????????????????????????????????????

  // counting sort

  rep(i, 0,
      a_max +
          1) { // 0??§???????????????????????????????????¨???????´???°?????§???????????§??????????????????????????????????????\??£??????????????????
    c[i] = 0;
  }

  //    dispAll(c, a_max+1);

  rep(i, 0, N) { // a[]??????????????°???c[]????????????c[i] =
                 // i???a[]??????????????????????????????
    c[a[i]]++;
  }

  //    dispAll(c, a_max+1);

  rep(i, 1, a_max + 1) { //?´?????????°????????????c[i] =
                         //i??\??????a[]??????????????????????????????
    c[i] += c[i - 1];
  }

  //    dispAll(c, a_max+1);

  for (
      int i = N - 1; i >= 0;
      i--) { //?´?????????°?????????????????????????????§???a[]?????????????????°???????????????
    output[c[a[i]] - 1] = a[i]; // a[i]??\????????°??????c[a[i]]????????????????????§???b[]???
                                // (c[a[i]]???1)???????????????????????°??????
    c[a[i]]--; //?¬????????????°?????????????????¨??????1????????????????????????????????????1?????????????????????????????°????????????????????§?????????????????¨??????
  }

  //    dispAll(output, N);

  rep(i, 0, N) {
    if (i == 0)
      cout << output[i];
    else
      cout << " " << output[i];
  }
  cout << endl;

#ifdef OUTPUT2TEXTFILE
  outputfile.close();
  cout << "\"" << OutputFilePath << "\"" << endl;
#endif

  return 0;
}

Fixed submission:
#include <algorithm> // next_permutation
#include <cmath>
#include <cstdio>
#include <iomanip>
#include <iostream>
#include <list>
#include <numeric> //accumulate
#include <queue>
#include <sstream>
#include <stack>
#include <string>
#include <vector>
// #include <unordered_map> //???????????\??¢??°
#include <fstream> //ifstream, ofstream

#define NDEBUG // NDEBUG???#include
               // <cassert>???????????????????????????????????´???assert?????????????????????????????????NDEBUG????????????????????¨
#include <cassert> //assert

using namespace std;

//???????????°??????TEST????????????????????¬???????????????????????????????????¢????????????
#define TEST //*******************************************************************************************************************************************
//?????????????????¨??§?????\????????????????????????????????°?????????????¨???????????????????dout???????????????????????§???????????¬??????????????????????????????????????????
//??????????????????????????????????????????????????????????§?CPU???????£??????????????????§???TLE?????????????????????????????????????????§????????¨???
//????????????????????????cerr????????£????????????????????????????????????
#ifdef TEST
#define dout cout
#else
stringstream dummy; //???????????°??????dout?????????????????????????????????
#define dout                                                                   \
  dummy.str("");                                                               \
  dummy.clear(stringstream::goodbit);                                          \
  dummy // dummy?????????????????????????????????????????¨?????¢?????¢???????????????
//???????????¨??????????????????goodbit?????????????????????????????¨???????????´????????????????????????????????¨?????°?????????????????§????????????????????????????????????
//http://d.hatena.ne.jp/linden/20060427/p1
#endif

//?¨??????????????????????????????????????????????????????´??????OUTPUT2TEXTFILE????????????????????¬???????????????????????????????????¢????????????
// #define OUTPUT2TEXTFILE
// //*******************************************************************************************************************************************
#ifdef OUTPUT2TEXTFILE
#define dout                                                                   \
  outputfile //??¨????????????TLE????????§?????????dout?????¨??¨??????????????¢????????????????????????????????????????????§????¨????????????´??????????????£??????????????????????¨?????????????????????????????????????????????§?????????????????????
// TEST??????????????????????????¨???outputfile??????????????????????????????
#define OUTPUTFILENAME "output.txt"
ofstream outputfile(OUTPUTFILENAME);
#define OutputFilePath                                                         \
  "/Users/Nag/Documents/Prgm/Test/DerivedData/Test/Build/Products/Debug/"      \
  "output.txt"
#endif

#define disp(A) dout << #A << " = " << (A) << endl
#define disP(A)                                                                \
  dout << setw(3) << (A) << " " // << setw(3) ??????????????\????????????
#define rep(i, a, n) for (int(i) = (a); (i) < (n); (i)++)

#define dispAll(A, n)                                                          \
  dout << #A << " = ";                                                         \
  rep(j, 0, (n)) { disP(A[j]); }                                               \
  dout << endl

typedef pair<int, int> pii;
typedef vector<int> vi;
typedef unsigned long long ll;

const int INF = 1e9 + 999;

int main() {
  const int a_max = 10000;

  int N;
  cin >> N;

  int a[N];
  rep(i, 0, N) cin >> a[i];

  int c[a_max + 1]; // a[]???????´???????????????°???????????????????????¨
  int output[N];    // a[]????????????????????????????????????????????????

  // counting sort

  rep(i, 0,
      a_max +
          1) { // 0??§???????????????????????????????????¨???????´???°?????§???????????§??????????????????????????????????????\??£??????????????????
    c[i] = 0;
  }

  //    dispAll(c, a_max+1);

  rep(i, 0, N) { // a[]??????????????°???c[]????????????c[i] =
                 // i???a[]??????????????????????????????
    c[a[i]]++;
  }

  //    dispAll(c, a_max+1);

  rep(i, 1, a_max + 1) { //?´?????????°????????????c[i] =
                         //i??\??????a[]??????????????????????????????
    c[i] += c[i - 1];
  }

  //    dispAll(c, a_max+1);

  for (
      int i = N - 1; i >= 0;
      i--) { //?´?????????°?????????????????????????????§???a[]?????????????????°???????????????
    output[c[a[i]] - 1] = a[i]; // a[i]??\????????°??????c[a[i]]????????????????????§???b[]???
                                // (c[a[i]]???1)???????????????????????°??????
    c[a[i]]--; //?¬????????????°?????????????????¨??????1????????????????????????????????????1?????????????????????????????°????????????????????§?????????????????¨??????
  }

  //    dispAll(output, N);

  rep(i, 0, N) {
    if (i == 0)
      cout << output[i];
    else
      cout << " " << output[i];
  }
  cout << endl;

#ifdef OUTPUT2TEXTFILE
  outputfile.close();
  cout << "\"" << OutputFilePath << "\"" << endl;
#endif

  return 0;
}