Problem p02700 (C++) — buggy submission, verdict: Time Limit Exceeded

#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
using namespace __gnu_pbds;
using namespace std;

#define ff first
#define ss second
#define int long long
#define pb push_back
#define mp make_pair
#define pii pair<int, int>
#define vi vector<int>
#define mii map<int, int>
#define pqb priority_queue<int>
#define pqs priority_queue<int, vi, greater<int>>
#define setbits(x) __builtin_popcountll(x)
#define zrobits(x) __builtin_ctzll(x)
#define mod 1000000007
#define inf 1e18
#define ps(x, y) fixed << setprecision(y) << x
#define mk(arr, n, type) type *arr = new type[n];
#define w(x)                                                                   \\
  int x;                                                                       \\
  cin >> x;                                                                    \\
  while (x--)
#define FIO                                                                    \\
  ios_base::sync_with_stdio(0);                                                \\
  cin.tie(0);                                                                  \\
  cout.tie(0)
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());

// https://www.instagram.com/p/B_Z9Oxdp-Kh/
typedef tree<int, null_type, less<int>, rb_tree_tag,
             tree_order_statistics_node_update>
    pbds;
int pwmd(int a, int n) {
  if (!n)
    return 1;
  int pt = pwmd(a, n / 2);
  pt *= pt, pt %= mod;
  if (n & 1)
    pt *= a, pt %= mod;
  return pt;
}
int pow(int a, int b) {
  int ans = 1;
  while (b > 0) {
    if (b & 1)
      ans *= a;
    a *= a;
    b = b >> 1;
  }
  return ans;
}
vector<pair<int, int>> vec;
bool compare(pair<int, int> v1, pair<int, int> v2) { return v1.ss < v2.ss; }
int32_t main() {
  FIO;
  int a1[3], a2[3];
  cin >> a1[1] >> a2[1] >> a1[2] >> a2[2];
  int c = 1;

  while (true) {
    if (a1[c] <= 0) {
      if (c == 1)
        cout << "No";
      else
        cout << "Yes";
      return 0;
    }

    a1[3 - c] -= a2[c];
    c = 3 - c;
  }
}

Error: TLE

Fixed submission:

#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
using namespace __gnu_pbds;
using namespace std;

#define ff first
#define ss second
#define int long long
#define pb push_back
#define mp make_pair
#define pii pair<int, int>
#define vi vector<int>
#define mii map<int, int>
#define pqb priority_queue<int>
#define pqs priority_queue<int, vi, greater<int>>
#define setbits(x) __builtin_popcountll(x)
#define zrobits(x) __builtin_ctzll(x)
#define mod 1000000007
#define inf 1e18
#define ps(x, y) fixed << setprecision(y) << x
#define mk(arr, n, type) type *arr = new type[n];
#define w(x)                                                                   \\
  int x;                                                                       \\
  cin >> x;                                                                    \\
  while (x--)
#define FIO                                                                    \\
  ios_base::sync_with_stdio(0);                                                \\
  cin.tie(0);                                                                  \\
  cout.tie(0)
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());

// https://www.instagram.com/p/B_Z9Oxdp-Kh/
typedef tree<int, null_type, less<int>, rb_tree_tag,
             tree_order_statistics_node_update>
    pbds;
int pwmd(int a, int n) {
  if (!n)
    return 1;
  int pt = pwmd(a, n / 2);
  pt *= pt, pt %= mod;
  if (n & 1)
    pt *= a, pt %= mod;
  return pt;
}
int pow(int a, int b) {
  int ans = 1;
  while (b > 0) {
    if (b & 1)
      ans *= a;
    a *= a;
    b = b >> 1;
  }
  return ans;
}
vector<pair<int, int>> vec;
bool compare(pair<int, int> v1, pair<int, int> v2) { return v1.ss < v2.ss; }
int32_t main() {
  FIO;
  int a, b, c, d;
  cin >> a >> b >> c >> d;
  int flag = 0;

  while (a != 0 && c != 0) {
    if (flag)
      a -= d;
    else
      c -= b;
    flag = 1 ^ flag;
  }

  if (a > 0)
    cout << "Yes" << endl;
  else
    cout << "No" << endl;
}