Problem p03297 (C++)

Buggy submission (status: Time Limit Exceeded):
#include <bits/stdc++.h>
using namespace std;

#define for_(i, a, b) for (int i = (a); i < (b); ++i)
#define rof_(i, a, b) for (int i = (a); i >= (b); --i)
#define allof(a) (a).begin(), (a).end()
#define minit(a, b) memset(a, b, sizeof(a))

using lint = long long;
using pii = pair<int, int>;

template <typename T> using Vec = vector<T>;

template <typename T> bool in_range(T x, T lb, T ub) {
  return lb <= x && x < ub;
}
template <typename T> bool in_range(T x, T y, T lb, T ub) {
  return in_range(x, lb, ub) && in_range(y, lb, ub);
}

template <typename T> void modAdd(T &a, T b, T mod) { a = (a + b + mod) % mod; }
template <typename T> void modMul(T &a, T b, T mod) { a = (a * b) % mod; }
template <typename T> void minUpdate(T &a, T b) { a = min(a, b); }
template <typename T> void maxUpdate(T &a, T b) { a = max(a, b); }

int bitCount(int x) { return __builtin_popcount(x); }
int bitCount(lint x) { return __builtin_popcountll(x); }

const int dx[4] = {0, 1, 0, -1}, dy[4] = {-1, 0, 1, 0};
const int Dx[8] = {0, 1, 1, 1, 0, -1, -1, -1},
          Dy[8] = {-1, -1, 0, 1, 1, 1, 0, -1};
const double EPS = 1e-9;
const double PI = acos(-1);

//--------------8---------------->> coding space
//<<-----------------8-------------//
lint A, B, C, D;

bool judge() {
  unordered_set<lint> hist;
  while (A >= B) {
    A %= B;
    if (hist.count(A))
      return true;
    hist.insert(A);
    if (A <= C)
      A += D;
  }
  return false;
}

int main() {
  int T;
  cin >> T;
  for_(i, 0, T) {
    cin >> A >> B >> C >> D;
    if (judge())
      puts("Yes");
    else
      puts("No");
  }
}
//--------------8---------------->> coding space
//<<-----------------8-------------//


Fixed submission:
#include <bits/stdc++.h>
using namespace std;

#define for_(i, a, b) for (int i = (a); i < (b); ++i)
#define rof_(i, a, b) for (int i = (a); i >= (b); --i)
#define allof(a) (a).begin(), (a).end()
#define minit(a, b) memset(a, b, sizeof(a))

using lint = long long;
using pii = pair<int, int>;

template <typename T> using Vec = vector<T>;

template <typename T> bool in_range(T x, T lb, T ub) {
  return lb <= x && x < ub;
}
template <typename T> bool in_range(T x, T y, T lb, T ub) {
  return in_range(x, lb, ub) && in_range(y, lb, ub);
}

template <typename T> void modAdd(T &a, T b, T mod) { a = (a + b + mod) % mod; }
template <typename T> void modMul(T &a, T b, T mod) { a = (a * b) % mod; }
template <typename T> void minUpdate(T &a, T b) { a = min(a, b); }
template <typename T> void maxUpdate(T &a, T b) { a = max(a, b); }

int bitCount(int x) { return __builtin_popcount(x); }
int bitCount(lint x) { return __builtin_popcountll(x); }

const int dx[4] = {0, 1, 0, -1}, dy[4] = {-1, 0, 1, 0};
const int Dx[8] = {0, 1, 1, 1, 0, -1, -1, -1},
          Dy[8] = {-1, -1, 0, 1, 1, 1, 0, -1};
const double EPS = 1e-9;
const double PI = acos(-1);

//--------------8---------------->> coding space
//<<-----------------8-------------//
lint A, B, C, D;

bool judge() {
  if (A < B)
    return false;
  if (B > D)
    return false;
  if (B <= C)
    return true;
  lint g = __gcd(B, D);
  return B - g + (A % g) <= C;
}

int main() {
  int T;
  cin >> T;
  for_(i, 0, T) {
    cin >> A >> B >> C >> D;
    if (judge())
      puts("Yes");
    else
      puts("No");
  }
}
//--------------8---------------->> coding space
//<<-----------------8-------------//