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

#include <bits/stdc++.h>
#include <boost/multiprecision/cpp_int.hpp>

using boost::multiprecision::cpp_int;
using namespace std;

#if __has_include("print.hpp")
#include "print.hpp"
#endif

#define rep(i, n) for (int i = 0; i < (int)(n); i++)
#define ALL(x) (x).begin(), (x).end()
#define RALL(x) (x).rbegin(), (x).rend()
#define MOD 1000000007

template <class T> inline bool chmax(T &a, T b) {
  if (a < b) {
    a = b;
    return 1;
  }
  return 0;
}
template <class T> inline bool chmin(T &a, T b) {
  if (a > b) {
    a = b;
    return 1;
  }
  return 0;
}

typedef long long ll;
typedef pair<ll, ll> p;

int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  ll n;
  cin >> n;
  string s = "";

  while (n) {
    n--;
    s += (char)('a' + (n % 26));
    n /= 26;
  }
  reverse(ALL(s));
  cout << s << endl;
  // count /= 26;
  // rem += count;
  //
  //
  // for(int i = 0; i < mozi; i++){
  //   cout << s[rem % 26];
  //   rem /= 26;
  // }
  // cout << endl;
}


Error: -11

Fixed submission:

#include <bits/stdc++.h>
#include <boost/multiprecision/cpp_int.hpp>

using boost::multiprecision::cpp_int;
using namespace std;

#if __has_include("print.hpp")
#include "print.hpp"
#endif

#define rep(i, n) for (int i = 0; i < (int)(n); i++)
#define ALL(x) (x).begin(), (x).end()
#define RALL(x) (x).rbegin(), (x).rend()
#define MOD 1000000007

template <class T> inline bool chmax(T &a, T b) {
  if (a < b) {
    a = b;
    return 1;
  }
  return 0;
}
template <class T> inline bool chmin(T &a, T b) {
  if (a > b) {
    a = b;
    return 1;
  }
  return 0;
}

typedef long long ll;
typedef pair<ll, ll> p;

class Radix {
private:
  const char *s;
  int a[12800];

public:
  Radix(const char *s = "ABCDEFGHIJKLMNOPQRSTUVWXYZ") : s(s) {
    int i;
    for (i = 0; s[i]; ++i)
      a[(int)s[i]] = i;
  }
  std::string to(long long p, int q) {
    int i;
    if (!p)
      return "A";
    char t[6400] = {};
    for (i = 62; p; --i) {
      t[i] = s[p % q];
      p /= q;
    }
    return std::string(t + i + 1);
  }
  std::string to(const std::string &t, int p, int q) { return to(to(t, p), q); }
  long long to(const std::string &t, int p) {
    int i;
    long long sm = a[(int)t[0]];
    for (i = 1; i < (int)t.length(); ++i)
      sm = sm * p + a[(int)t[i]];
    return sm;
  }
};

int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  ll n;
  cin >> n;
  // Radix r;
  // n--;

  vector<int> res(200001, -1);
  vector<p> zero;
  int count = 0;
  while (n != 0) {
    if (n % 26 == 0)
      res[count] = 26;
    else
      res[count] = n % 26;
    n -= 26;
    count++;
  }
  reverse(ALL(res));
  bool flag = false;
  int s = 0;
  for (int i = 0; i < 200001; ++i) {
    if (res[i] != 1)
      flag = true;
    if (res[i] == 0 && !flag) {
      zero.push_back({s, i});
      s = i;
      flag = false;
    }
  }

  s = 0;
  for (int i = 0; i < 200001; ++i) {
    if (zero.size() > s && i == zero[s].first) {
      for (int j = zero[s].first; j < zero[s].second; ++i) {
        cout << 'z';
      }
      s++;
    }
    if (res[i] == -1)
      continue;
    if (res[i] == 0)
      continue;
    cout << (char)('a' + (res[i] - 1));
  }
  cout << endl;

  // ll num = 1;
  // ll count = 1;
  // ll mozi = 0;
  // while(count <= n){
  //   num *= 26;
  //   count += num;
  //   mozi++;
  // }
  // count -= num;
  //
  //
  // ll count2 = 1;
  // string res = "";
  // // while(mozi){
  // //   res += 'a' + ()
  // // }
  // cout << count << endl;
  // cout << mozi << endl;
  //
}