Problem p02578 (C++)

Buggy submission (status: Runtime Error):
// #pragma region ALL(include define etc)
#include <algorithm>  // max(a, b) min(a, b) reverse() sort()
#include <cmath>      // abs(絶対値) sin cos tan(角度 / 180.0 * 3.141592)
#include <functional> // sort(a, a + N, greater<型>());
#include <iomanip>
#include <iostream> // swap(a, b)
#include <limits>
#include <math.h>
#include <string>
#include <vector> // vec.push_back(a) vec.pop_back()
#define int long long
// #define int unsigned long long
#define ll long long
#define double long double
using namespace std;
// #pragma endregion

signed main() {
  // 10^18 = 1000000000000000000

  // int h1, h2, m1, m2, k;
  // int box, box1,box2;

  // int N;
  int n;
  // char n;
  // int a, b, c;
  // int m;
  int h, w, x;
  int k;
  int d;
  // int t;
  // string s;
  // string t;
  // int m1, m2;
  // int a, b, c, k;
  // int x, y;

  string s;
  // string s[100000];
  // string c[7];
  // int a[100000];
  // int b[200000];
  // int a[2000000] = { 0 };
  // int b[2000000] = { 0 };
  // int a[20000] = { 0 };
  // int b[20000] = { 0 };
  // vector<int>a(2000000);
  // vector<int>b(2000000);

  // int aaa = 0;
  // int bbb = 0;

  // int box[20000] = { 0 };
  char box[20000];
  int a[20000] = {0};
  // int box = 0;
  // int box[7][7] = { 0 };
  // int box2;
  // int p[1111];
  // int x[2000], y[2000];
  // int l[100];

  // long double aaa;

  int count = 0;
  // int k, d;
  // int a = 0;
  int all = 0;
  // double all;
  // double a, b;
  // double h, m;
  // int a[30000] = { 0 };
  // double c, d, e;

  // double mbox, hbox;
  // double box, box2;

  bool flag = true;
  // bool flag = false;

  // string str;

  // cin >> h1 >> m1 >> h2 >> m2 >> k;
  cin >> n;
  // cin >> a >> b >> c;
  // cin >> s;
  // cin >> h >> w >> k;
  // cin >> n >> x >> t;

  for (int i = 0; i < n; i++) {
    cin >> a[i];
  }

  /*for (int i = 0;i<n; i++)
  {
          if (i == 0)
          {

          }
          else
          {
                  for (int j = 0; a[i - 1] > a[i]; j++)
                  {
                          a[i]++;
                          all++;
                  }
          }
  }*/

  for (int i = 1; i < n; i++) {
    if (a[i - 1] > a[i]) {
      all += (a[i - 1] - a[i]);
      a[i] = a[i - 1];
    }
  }

  // getline(cin, s);

  /*for (int i = 0; i < count; i++)
  {
          all += s[i] - '0';
  }*/

  // n = s.length();

  // sort(p, p + n);
  // n = n - 'Z';

  // box = n % 26;

  // for (int i = 0; i < k; i++)
  //{
  //	all += p[i];
  // }

  // all = n + (n * n) + (n * n * n);

  /*if (n > 0)
  {
          cout << "a\n";
  }
  else
  {
          cout << "A\n";
  }*/
  // n = t.length();

  /*cout << "AC x " << ac << "\n";
  cout << "WA x " << wa << "\n";
  cout << "TLE x " << tle << "\n";
  cout << "RE x " << re << "\n";*/

  // cout << x << "\n";
  cout << all << "\n";
  // cout << box << "\n";
  // cout << a << b << c << "\n";

  /*if (flag == true)
  {
          cout << "Yes\n";
  }
  else
  {
          cout << "No\n";
  }*/

  // cout << fixed << setprecision(111) << all;
  // return 0;
}


Fixed submission:
// #pragma region ALL(include define etc)
#include <algorithm>  // max(a, b) min(a, b) reverse() sort()
#include <cmath>      // abs(絶対値) sin cos tan(角度 / 180.0 * 3.141592)
#include <functional> // sort(a, a + N, greater<型>());
#include <iomanip>
#include <iostream> // swap(a, b)
#include <limits>
#include <math.h>
#include <string>
#include <vector> // vec.push_back(a) vec.pop_back()
#define int long long
// #define int unsigned long long
#define ll long long
#define double long double
using namespace std;
// #pragma endregion

signed main() {
  // 10^18 = 1000000000000000000

  // int h1, h2, m1, m2, k;
  // int box, box1,box2;

  // int N;
  int n;
  // char n;
  // int a, b, c;
  // int m;
  int h, w, x;
  int k;
  int d;
  // int t;
  // string s;
  // string t;
  // int m1, m2;
  // int a, b, c, k;
  // int x, y;

  string s;
  // string s[100000];
  // string c[7];
  // int a[100000];
  // int b[200000];
  // int a[2000000] = { 0 };
  // int b[2000000] = { 0 };
  // int a[20000] = { 0 };
  // int b[20000] = { 0 };
  // vector<int>a(2000000);
  // vector<int>b(2000000);

  // int aaa = 0;
  // int bbb = 0;

  // int box[20000] = { 0 };
  char box[20000];
  int a[2000000] = {0};
  // int box = 0;
  // int box[7][7] = { 0 };
  // int box2;
  // int p[1111];
  // int x[2000], y[2000];
  // int l[100];

  // long double aaa;

  int count = 0;
  // int k, d;
  // int a = 0;
  int all = 0;
  // double all;
  // double a, b;
  // double h, m;
  // int a[30000] = { 0 };
  // double c, d, e;

  // double mbox, hbox;
  // double box, box2;

  bool flag = true;
  // bool flag = false;

  // string str;

  // cin >> h1 >> m1 >> h2 >> m2 >> k;
  cin >> n;
  // cin >> a >> b >> c;
  // cin >> s;
  // cin >> h >> w >> k;
  // cin >> n >> x >> t;

  for (int i = 0; i < n; i++) {
    cin >> a[i];
  }

  /*for (int i = 0;i<n; i++)
  {
          if (i == 0)
          {

          }
          else
          {
                  for (int j = 0; a[i - 1] > a[i]; j++)
                  {
                          a[i]++;
                          all++;
                  }
          }
  }*/

  for (int i = 1; i < n; i++) {
    if (a[i - 1] > a[i]) {
      all += (a[i - 1] - a[i]);
      a[i] = a[i - 1];
    }
  }

  // getline(cin, s);

  /*for (int i = 0; i < count; i++)
  {
          all += s[i] - '0';
  }*/

  // n = s.length();

  // sort(p, p + n);
  // n = n - 'Z';

  // box = n % 26;

  // for (int i = 0; i < k; i++)
  //{
  //	all += p[i];
  // }

  // all = n + (n * n) + (n * n * n);

  /*if (n > 0)
  {
          cout << "a\n";
  }
  else
  {
          cout << "A\n";
  }*/
  // n = t.length();

  /*cout << "AC x " << ac << "\n";
  cout << "WA x " << wa << "\n";
  cout << "TLE x " << tle << "\n";
  cout << "RE x " << re << "\n";*/

  // cout << x << "\n";
  cout << all << "\n";
  // cout << box << "\n";
  // cout << a << b << c << "\n";

  /*if (flag == true)
  {
          cout << "Yes\n";
  }
  else
  {
          cout << "No\n";
  }*/

  // cout << fixed << setprecision(111) << all;
  // return 0;
}