Problem p03661 (C++)

Buggy submission (status: Runtime Error):
// Standard I/O
#include <cstdio>
#include <iostream>
#include <sstream>
// Standard Library
#include <cmath>
#include <cstdlib>
#include <cstring>
#include <ctime>
// Template Class
#include <complex>
#include <list>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <vector>
// Container Control
#include <algorithm>

using namespace std;

#define rep(i, n) for (int i = 0; i < n; ++i)
#define irep(i, n) for (int i = n - 1; i >= 0; --i)
#define reep(i, s, n) for (int i = s; i < n; ++i)
#define ireep(i, n, s) for (int i = n - 1; i >= s; --i)
#define foreach(itr, x)                                                        \
  for (typeof(x.begin()) itr = x.begin(); itr != x.end(); ++itr)

#define mp make_pair
#define mt make_tuple
#define pb push_back
#define eb emplace_back
#define all(v) v.begin(), v.end()
#define fs first
#define sc second
#define vc vector

// for visualizer.html
double SCALE = 1.0;
double OFFSET_X = 0.0;
double OFFSET_Y = 0.0;
#define LINE(x, y, a, b)                                                       \
  cerr << "line(" << SCALE * (x) + OFFSET_X << "," << SCALE * (y) + OFFSET_Y   \
       << "," << SCALE * (a) + OFFSET_X << "," << SCALE * (b) + OFFSET_Y       \
       << ")" << endl;
#define CIRCLE(x, y, r)                                                        \
  cerr << "circle(" << SCALE * (x) + OFFSET_X << "," << SCALE * (y) + OFFSET_Y \
       << "," << SCALE * (r) << ")" << endl;

typedef long long ll;
typedef complex<double> Point;

typedef pair<int, int> pii;
typedef pair<int, pii> ipii;
typedef vector<int> vi;
typedef vector<double> vd;
typedef vector<vector<int>> vii;
typedef vector<vector<double>> vdd;

typedef vector<int>::iterator vi_itr;

const int IINF = 1 << 28;
const int MOD = 1e9 + 7;
const double INF = 1e30;
const double EPS = 1e-10;
const double PI = acos(-1.0);

// Direction : L U R D
const int dx[] = {-1, 0, 1, 0};
const int dy[] = {0, -1, 0, 1};

int main() {
  int n;
  int a[100000];
  ll sum[100010] = {0};

  cin >> n;
  rep(i, n) cin >> a[i];

  rep(i, n) sum[i + 1] = sum[i] + a[i];

  ll ans = 1ll << 62;
  rep(i, n - 1) ans = min(ans, abs(sum[i + 1] - (sum[n] - sum[i + 1])));

  cout << ans << endl;
}


Fixed submission:
// Standard I/O
#include <cstdio>
#include <iostream>
#include <sstream>
// Standard Library
#include <cmath>
#include <cstdlib>
#include <cstring>
#include <ctime>
// Template Class
#include <complex>
#include <list>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <vector>
// Container Control
#include <algorithm>

using namespace std;

#define rep(i, n) for (int i = 0; i < n; ++i)
#define irep(i, n) for (int i = n - 1; i >= 0; --i)
#define reep(i, s, n) for (int i = s; i < n; ++i)
#define ireep(i, n, s) for (int i = n - 1; i >= s; --i)
#define foreach(itr, x)                                                        \
  for (typeof(x.begin()) itr = x.begin(); itr != x.end(); ++itr)

#define mp make_pair
#define mt make_tuple
#define pb push_back
#define eb emplace_back
#define all(v) v.begin(), v.end()
#define fs first
#define sc second
#define vc vector

// for visualizer.html
double SCALE = 1.0;
double OFFSET_X = 0.0;
double OFFSET_Y = 0.0;
#define LINE(x, y, a, b)                                                       \
  cerr << "line(" << SCALE * (x) + OFFSET_X << "," << SCALE * (y) + OFFSET_Y   \
       << "," << SCALE * (a) + OFFSET_X << "," << SCALE * (b) + OFFSET_Y       \
       << ")" << endl;
#define CIRCLE(x, y, r)                                                        \
  cerr << "circle(" << SCALE * (x) + OFFSET_X << "," << SCALE * (y) + OFFSET_Y \
       << "," << SCALE * (r) << ")" << endl;

typedef long long ll;
typedef complex<double> Point;

typedef pair<int, int> pii;
typedef pair<int, pii> ipii;
typedef vector<int> vi;
typedef vector<double> vd;
typedef vector<vector<int>> vii;
typedef vector<vector<double>> vdd;

typedef vector<int>::iterator vi_itr;

const int IINF = 1 << 28;
const int MOD = 1e9 + 7;
const double INF = 1e30;
const double EPS = 1e-10;
const double PI = acos(-1.0);

// Direction : L U R D
const int dx[] = {-1, 0, 1, 0};
const int dy[] = {0, -1, 0, 1};

int main() {
  int n;
  int a[200000];
  ll sum[200010] = {0};

  cin >> n;
  rep(i, n) cin >> a[i];

  rep(i, n) sum[i + 1] = sum[i] + a[i];

  ll ans = 1ll << 62;
  rep(i, n - 1) ans = min(ans, abs(sum[i + 1] - (sum[n] - sum[i + 1])));

  cout << ans << endl;
}