Problem p03964 (C++)

Buggy submission (status: Time Limit Exceeded):
#include <algorithm>
#include <iostream>
#include <map>
#include <math.h>
#include <queue>
#include <set>
#include <stdio.h>
#include <string.h>
#include <vector>
using namespace std;

#define rep(i, a) for (int i = 0; i < a; i++)
#define rrep(i, a) for (int i = a; i >= 0; i--)
#define loop3(i, j, k, a)                                                      \
  for (int i = 0; i < a; i++)                                                  \
    for (int j = 0; j < a; j++)                                                \
      if (i != j)                                                              \
        for (int k = 0; k < a; k++)                                            \
          if (i != k && j != k)
#define loop4(i, j, k, l, a)                                                   \
  for (int i = 0; i < a; i++)                                                  \
    for (int j = 0; j < a; j++)                                                \
      if (i != j)                                                              \
        for (int k = 0; k < a; k++)                                            \
          if (i != k && j != k)                                                \
            for (int l = 0; l < a; l++)                                        \
              if (i != l && j != l && k != l)
#define rep1(i, a) for (int i = 1; i <= a; i++)

#define scnd1(a) scanf("%d", &a)
#define scnd2(a, b) scanf("%d%d", &a, &b)
#define scnd3(a, b, c) scanf("%d%d%d", &a, &b, &c)
#define scnd4(a, b, c, d) scanf("%d%d%d%d", &a, &b, &c, &d)

#define cin1(a) cin >> a;
#define cin2(a, b) cin >> a >> b;
#define cin3(a, b, c) cin >> a >> b >> c;
#define cin4(a, b, c, d) cin >> a >> b >> c >> d;
#define cout1(a) cout << a << endl;
#define cout2(a, b) cout << a << " " << b << endl;
#define cout3(a, b, c) cout << a << " " << b << " " << c << endl;
#define cout4(a, b, c, d) cout << a << " " << b << " " << c << " " << d << endl;
#define prtd1(a) printf("%d\n", a)
#define prtd2(a, b) printf("%d %d\n", a, b)
#define prtd3(a, b, c) printf("%d %d %d\n", a, b, c)
#define prtd4(a, b, c, d) printf("%d %d %d %d\n", a, b, c, d)

#define mem(a, n) memset(a, n, sizeof(a))
typedef long long ll;
const int INF = 1e9;
const ll LLINF = 1e18;

int main() {
  int N;
  cin >> N;

  ll T = 1, A = 1;
  rep(k, N) {
    ll t, a;
    cin >> t >> a;
    int i = max(T / t, A / a);
    for (;; i++) {
      if (T <= t * i)
        T = t * i;
      if (A <= a * i)
        A = a * i;
      if (T == t * i && A == a * i)
        break;
    }
  }
  cout1(T + A);
}

Fixed submission:
#include <algorithm>
#include <iostream>
#include <map>
#include <math.h>
#include <queue>
#include <set>
#include <stdio.h>
#include <string.h>
#include <vector>
using namespace std;

#define rep(i, a) for (int i = 0; i < a; i++)
#define rrep(i, a) for (int i = a; i >= 0; i--)
#define loop3(i, j, k, a)                                                      \
  for (int i = 0; i < a; i++)                                                  \
    for (int j = 0; j < a; j++)                                                \
      if (i != j)                                                              \
        for (int k = 0; k < a; k++)                                            \
          if (i != k && j != k)
#define loop4(i, j, k, l, a)                                                   \
  for (int i = 0; i < a; i++)                                                  \
    for (int j = 0; j < a; j++)                                                \
      if (i != j)                                                              \
        for (int k = 0; k < a; k++)                                            \
          if (i != k && j != k)                                                \
            for (int l = 0; l < a; l++)                                        \
              if (i != l && j != l && k != l)
#define rep1(i, a) for (int i = 1; i <= a; i++)

#define scnd1(a) scanf("%d", &a)
#define scnd2(a, b) scanf("%d%d", &a, &b)
#define scnd3(a, b, c) scanf("%d%d%d", &a, &b, &c)
#define scnd4(a, b, c, d) scanf("%d%d%d%d", &a, &b, &c, &d)

#define cin1(a) cin >> a;
#define cin2(a, b) cin >> a >> b;
#define cin3(a, b, c) cin >> a >> b >> c;
#define cin4(a, b, c, d) cin >> a >> b >> c >> d;
#define cout1(a) cout << a << endl;
#define cout2(a, b) cout << a << " " << b << endl;
#define cout3(a, b, c) cout << a << " " << b << " " << c << endl;
#define cout4(a, b, c, d) cout << a << " " << b << " " << c << " " << d << endl;
#define prtd1(a) printf("%d\n", a)
#define prtd2(a, b) printf("%d %d\n", a, b)
#define prtd3(a, b, c) printf("%d %d %d\n", a, b, c)
#define prtd4(a, b, c, d) printf("%d %d %d %d\n", a, b, c, d)

#define mem(a, n) memset(a, n, sizeof(a))
typedef long long ll;
const int INF = 1e9;
const ll LLINF = 1e18;

int main() {
  int N;
  cin >> N;

  ll T = 1, A = 1;
  rep(k, N) {
    ll t, a;
    cin >> t >> a;
    ll i = max(T / t, A / a);
    for (;; i++) {
      if (T <= t * i)
        T = t * i;
      if (A <= a * i)
        A = a * i;
      if (T == t * i && A == a * i)
        break;
    }
  }
  cout1(T + A);
}