Problem p03282 (C++)

Buggy submission (status: Runtime Error):

#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define endl "\n"
#define pb push_back
#define f(i, n) for (i = 0; i < n; i++)
#define F(i, a, b) for (i = a; a <= b; i++)
#define arr(a, n)                                                              \
  for (i = 0; i < n; i++)                                                      \
    cin >> a[i];
#define fi first
#define se second
#define mp make_pair
#define mod 1000000007
#define YES cout << "YES" << endl;
#define Yes cout << "Yes" << endl;
#define NO cout << "NO" << endl;
#define No cout << "No" << endl;
#define yes cout << "yes" << endl;
#define no cout << "no" << endl;
#define vi vector<ll>
#define ed end()
#define bg begin()
#define sz size()
#define ln length()
#define s() sort(a, a + n);
#define sr() sort(a, a + n, greater<ll>());
#define v() sort(v.begin(), v.end());
#define vr() sort(v.begin(), v.end(), greater<ll>());
#define mod 1000000007
#define fast()                                                                 \
  ios_base::sync_with_stdio(0);                                                \
  cin.tie(0);                                                                  \
  cout.tie(0)
ll gcd(ll a, ll b) {
  if (!b)
    return a;
  return gcd(b, a % b);
}
ll power(ll x, ll y, ll p) {
  ll res = 1;
  x %= p;
  while (y > 0) {
    if (y & 1)
      res = (res * x) % p;
    y = y >> 1;
    x = (x * x) % p;
  }
  return res;
}
int main() {
#ifndef ONLINE_JUDGE
  // for getting input from input.txt
  freopen("input.txt", "r", stdin);
  // for writing output to output.txt
  freopen("output.txt", "w", stdout);
#endif
  /*
  Ofcourse it's Hard.
  It's supposed to be Hard.
  If it's easy everyone would do it.
  HARD IS WHAT MAKES IT GREAT

  YESTERDAY U SAID TOMORROW

  SLOWLY BECOMING THE PERSON I
  SHOULD HAVE BEEN A LONG TIME AGO

  SAME TASK CAN'T BE FOUND DIFFICULT TWICE

  BTBHWSITW

  SPRH TU KAB P

  CP IS ALL ABOUT THINKING
  YOU HAVE MUCH MORE POTENTIAL THAN U THINK

  AJIT SHIDDAT 10

  UR DAILY ROUTINE


  */

  fast();
  // ll t;cin>>t;while(t--)
  {
    string s;
    cin >> s;
    ll n;
    cin >> n;
    if (n == 1)
      cout << s[0] << endl;
    else if (s[0] != '1')
      cout << s[0] << endl;
    else {
      int i = 0;

      while (s[i] == '1') {
        i++;
      }
      if (i >= n)
        cout << s[n - 1] << endl;
      else if (i == s.length()) {
        cout << s[n - 1] << endl;
      } else {
        cout << s[i] << endl;
      }
    }
  }
  return 0;
}

Fixed submission:

#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define endl "\n"
#define pb push_back
#define f(i, n) for (i = 0; i < n; i++)
#define F(i, a, b) for (i = a; a <= b; i++)
#define arr(a, n)                                                              \
  for (i = 0; i < n; i++)                                                      \
    cin >> a[i];
#define fi first
#define se second
#define mp make_pair
#define mod 1000000007
#define YES cout << "YES" << endl;
#define Yes cout << "Yes" << endl;
#define NO cout << "NO" << endl;
#define No cout << "No" << endl;
#define yes cout << "yes" << endl;
#define no cout << "no" << endl;
#define vi vector<ll>
#define ed end()
#define bg begin()
#define sz size()
#define ln length()
#define s() sort(a, a + n);
#define sr() sort(a, a + n, greater<ll>());
#define v() sort(v.begin(), v.end());
#define vr() sort(v.begin(), v.end(), greater<ll>());
#define mod 1000000007
#define fast()                                                                 \
  ios_base::sync_with_stdio(0);                                                \
  cin.tie(0);                                                                  \
  cout.tie(0)
ll gcd(ll a, ll b) {
  if (!b)
    return a;
  return gcd(b, a % b);
}
ll power(ll x, ll y, ll p) {
  ll res = 1;
  x %= p;
  while (y > 0) {
    if (y & 1)
      res = (res * x) % p;
    y = y >> 1;
    x = (x * x) % p;
  }
  return res;
}
int main() {
  /*#ifndef ONLINE_JUDGE
      // for getting input from input.txt
      freopen("input.txt", "r", stdin);
      // for writing output to output.txt
      freopen("output.txt", "w", stdout);
  #endif*/
  /*
  Ofcourse it's Hard.
  It's supposed to be Hard.
  If it's easy everyone would do it.
  HARD IS WHAT MAKES IT GREAT

  YESTERDAY U SAID TOMORROW

  SLOWLY BECOMING THE PERSON I
  SHOULD HAVE BEEN A LONG TIME AGO

  SAME TASK CAN'T BE FOUND DIFFICULT TWICE

  BTBHWSITW

  SPRH TU KAB P

  CP IS ALL ABOUT THINKING
  YOU HAVE MUCH MORE POTENTIAL THAN U THINK

  AJIT SHIDDAT 10

  UR DAILY ROUTINE


  */

  fast();
  // ll t;cin>>t;while(t--)
  {
    string s;
    cin >> s;
    ll n;
    cin >> n;
    if (n == 1)
      cout << s[0] << endl;
    else if (s[0] != '1')
      cout << s[0] << endl;
    else {
      int i = 0;

      while (s[i] == '1') {
        i++;
      }
      if (i >= n)
        cout << s[n - 1] << endl;
      else if (i == s.length()) {
        cout << s[n - 1] << endl;
      } else {
        cout << s[i] << endl;
      }
    }
  }
  return 0;
}