Problem p03255 (C++)

Buggy submission (status: Runtime Error):
#include <algorithm>
#include <bitset>
#include <cassert>
#include <cmath>
#include <complex>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <functional>
#include <iomanip>
#include <iostream>
#include <list>
#include <map>
#include <numeric>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <unordered_map>
#include <unordered_set>
#include <vector>
#define mp make_pair
#define pb push_back
#define X first
#define Y second
#define y0 y12
#define y1 y22
#define INF 1987654321987654321
#define PI 3.141592653589793238462643383279502884
#define fup(i, a, b, c) for (int(i) = (a); (i) <= (b); (i) += (c))
#define fdn(i, a, b, c) for (int(i) = (a); (i) >= (b); (i) -= (c))
#define MEM0(a) memset((a), 0, sizeof(a));
#define MEM_1(a) memset((a), -1, sizeof(a));
#define ALL(a) a.begin(), a.end()
#define SYNC                                                                   \
  ios_base::sync_with_stdio(false);                                            \
  cin.tie(0)
using namespace std;
typedef long long ll;
typedef long double ld;
typedef double db;
typedef unsigned int uint;
typedef unsigned long long ull;
typedef pair<int, int> Pi;
typedef pair<ll, ll> Pll;
typedef pair<double, double> Pd;
typedef vector<int> Vi;
typedef vector<ll> Vll;
typedef vector<double> Vd;
typedef vector<Pi> VPi;
typedef vector<Pll> VPll;
typedef vector<Pd> VPd;
typedef tuple<int, int, int> iii;
typedef tuple<int, int, int, int> iiii;
typedef tuple<ll, ll, ll> LLL;
typedef vector<iii> Viii;
typedef vector<LLL> VLLL;
typedef complex<double> base;
const ll MOD = 998244353;
ll POW(ll a, ll b, ll MMM = MOD) {
  ll ret = 1;
  for (; b; b >>= 1, a = (a * a) % MMM)
    if (b & 1)
      ret = (ret * a) % MMM;
  return ret;
}
ll gcd(ll a, ll b) { return b ? gcd(b, a % b) : a; }
ll lcm(ll a, ll b) {
  if (a == 0 || b == 0)
    return a + b;
  return a * (b / gcd(a, b));
}
int dx[] = {0, 1, 0, -1, 1, 1, -1, -1}, dy[] = {1, 0, -1, 0, 1, -1, 1, -1};

int n;
ll x, a[200001], sum[400001];
int main() {
  scanf("%d%lld", &n, &x);
  fdn(i, n, 1, 1) scanf("%lld", a + i);
  fup(i, 1, 2 * n, 1) sum[i] = sum[i - 1] + a[i];
  ll ans = INF;
  fup(k, 1, n, 1) {
    ll t = k * x + 5 * sum[k];
    for (int i = 2; (i - 1) * k <= n; i++) {
      t += (sum[i * k] - sum[(i - 1) * k]) * (2 * i + 1);
      if (t >= INF) {
        t = INF;
        break;
      }
    }
    if (t != INF)
      ans = min(ans, t);
  }
  printf("%lld", ans + x * n);
}

Fixed submission:
#include <algorithm>
#include <bitset>
#include <cassert>
#include <cmath>
#include <complex>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <functional>
#include <iomanip>
#include <iostream>
#include <list>
#include <map>
#include <numeric>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <unordered_map>
#include <unordered_set>
#include <vector>
#define mp make_pair
#define pb push_back
#define X first
#define Y second
#define y0 y12
#define y1 y22
#define INF 1987654321987654321
#define PI 3.141592653589793238462643383279502884
#define fup(i, a, b, c) for (int(i) = (a); (i) <= (b); (i) += (c))
#define fdn(i, a, b, c) for (int(i) = (a); (i) >= (b); (i) -= (c))
#define MEM0(a) memset((a), 0, sizeof(a));
#define MEM_1(a) memset((a), -1, sizeof(a));
#define ALL(a) a.begin(), a.end()
#define SYNC                                                                   \
  ios_base::sync_with_stdio(false);                                            \
  cin.tie(0)
using namespace std;
typedef long long ll;
typedef long double ld;
typedef double db;
typedef unsigned int uint;
typedef unsigned long long ull;
typedef pair<int, int> Pi;
typedef pair<ll, ll> Pll;
typedef pair<double, double> Pd;
typedef vector<int> Vi;
typedef vector<ll> Vll;
typedef vector<double> Vd;
typedef vector<Pi> VPi;
typedef vector<Pll> VPll;
typedef vector<Pd> VPd;
typedef tuple<int, int, int> iii;
typedef tuple<int, int, int, int> iiii;
typedef tuple<ll, ll, ll> LLL;
typedef vector<iii> Viii;
typedef vector<LLL> VLLL;
typedef complex<double> base;
const ll MOD = 998244353;
ll POW(ll a, ll b, ll MMM = MOD) {
  ll ret = 1;
  for (; b; b >>= 1, a = (a * a) % MMM)
    if (b & 1)
      ret = (ret * a) % MMM;
  return ret;
}
ll gcd(ll a, ll b) { return b ? gcd(b, a % b) : a; }
ll lcm(ll a, ll b) {
  if (a == 0 || b == 0)
    return a + b;
  return a * (b / gcd(a, b));
}
int dx[] = {0, 1, 0, -1, 1, 1, -1, -1}, dy[] = {1, 0, -1, 0, 1, -1, 1, -1};

int n;
ll x, a[400001], sum[400001];
int main() {
  scanf("%d%lld", &n, &x);
  fdn(i, n, 1, 1) scanf("%lld", a + i);
  fup(i, 1, 2 * n, 1) sum[i] = sum[i - 1] + a[i];
  ll ans = INF;
  fup(k, 1, n, 1) {
    ll t = k * x + 5 * sum[k];
    for (int i = 2; (i - 1) * k <= n; i++) {
      t += (sum[i * k] - sum[(i - 1) * k]) * (2 * i + 1);
      if (t >= INF) {
        t = INF;
        break;
      }
    }
    if (t != INF)
      ans = min(ans, t);
  }
  printf("%lld", ans + x * n);
}