Problem p03247 (C++)

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

#define FOR(i, a, b) for (int i = (a); i < (b); ++i)
#define F0R(i, a) FOR(i, 0, a)
#define ROF(i, a, b) for (int i = (b)-1; i >= (a); --i)
#define R0F(i, a) ROF(i, 0, a)
#define f first
#define s second

using ll = long long;
using ld = long double;
ll INF = LLONG_MAX;

using vi = vector<int>;
using vll = vector<ll>;
using pii = pair<int, int>;

namespace output {
void pr(int x) { cout << x; }
void pr(long x) { cout << x; }
void pr(ll x) { cout << x; }
void pr(unsigned x) { cout << x; }
void pr(unsigned long x) { cout << x; }
void pr(unsigned long long x) { cout << x; }
void pr(float x) { cout << x; }
void pr(double x) { cout << x; }
void pr(ld x) { cout << x; }
void pr(char x) { cout << x; }
void pr(const char *x) { cout << x; }
void pr(const string &x) { cout << x; }
void pr(bool x) { pr(x ? "true" : "false"); }
template <class T> void pr(const complex<T> &x) { cout << x; }

template <class T1, class T2> void pr(const pair<T1, T2> &x);
template <class T> void pr(const T &x);

template <class T, class... Ts> void pr(const T &t, const Ts &...ts) {
  pr(t);
  pr(ts...);
}
template <class T1, class T2> void pr(const pair<T1, T2> &x) {
  pr("{", x.f, ", ", x.s, "}");
}
template <class T> void pr(const T &x) {
  pr("{"); // const iterator needed for vector<bool>
  bool fst = 1;
  for (const auto &a : x)
    pr(!fst ? ", " : "", a), fst = 0;
  pr("}");
}

void print() { pr("\n"); } // print w/ spaces
template <class T, class... Ts> void print(const T &t, const Ts &...ts) {
  pr(t);
  if (sizeof...(ts))
    pr(" ");
  print(ts...);
}
} // namespace output

using namespace output;

int main() {
  ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  int N;
  cin >> N;
  vector<pair<ll, ll>> points(N);
  F0R(i, N) {
    ll x, y;
    cin >> x >> y;
    points[i] = {x, y};
  }

  bool par = (points[0].first ^ points[0].second) & 1;
  F0R(i, N) if (((points[i].first ^ points[i].second) & 1) != par) {
    print(-1);
    return 0;
  }

  vll sizes;
  vector<string> ans(N);

  if (!par) {
    F0R(i, N) points[i].second++;
    sizes.push_back(1);
    F0R(i, N) ans[i] += "D";
  }

  R0F(d, 30) {
    sizes.push_back(1ll << d);
    F0R(i, N) {
      ll x = points[i].first;
      ll y = points[i].second;
      if (y >= x && y >= -x) {
        ans[i] += "U";
        points[i].second -= 1ll << d;
      } else if (y >= x && y < -x) {
        ans[i] += "L";
        points[i].first += 1ll << d;
      } else if (y < x && y >= -x) {
        ans[i] += "R";
        points[i].first -= 1ll << d;
      } else if (y < x && y < -x) {
        ans[i] += "D";
        points[i].second += 1ll << d;
      }
    }
  }
  F0R(i, N) { assert(points[i].first == 0 && points[i].second == 0); }

  print(sizes.size());
  for (ll x : sizes)
    cout << x << " ";
  cout << endl;
  F0R(i, N) print(ans[i]);
}

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

#define FOR(i, a, b) for (int i = (a); i < (b); ++i)
#define F0R(i, a) FOR(i, 0, a)
#define ROF(i, a, b) for (int i = (b)-1; i >= (a); --i)
#define R0F(i, a) ROF(i, 0, a)
#define f first
#define s second

using ll = long long;
using ld = long double;
ll INF = LLONG_MAX;

using vi = vector<int>;
using vll = vector<ll>;
using pii = pair<int, int>;

namespace output {
void pr(int x) { cout << x; }
void pr(long x) { cout << x; }
void pr(ll x) { cout << x; }
void pr(unsigned x) { cout << x; }
void pr(unsigned long x) { cout << x; }
void pr(unsigned long long x) { cout << x; }
void pr(float x) { cout << x; }
void pr(double x) { cout << x; }
void pr(ld x) { cout << x; }
void pr(char x) { cout << x; }
void pr(const char *x) { cout << x; }
void pr(const string &x) { cout << x; }
void pr(bool x) { pr(x ? "true" : "false"); }
template <class T> void pr(const complex<T> &x) { cout << x; }

template <class T1, class T2> void pr(const pair<T1, T2> &x);
template <class T> void pr(const T &x);

template <class T, class... Ts> void pr(const T &t, const Ts &...ts) {
  pr(t);
  pr(ts...);
}
template <class T1, class T2> void pr(const pair<T1, T2> &x) {
  pr("{", x.f, ", ", x.s, "}");
}
template <class T> void pr(const T &x) {
  pr("{"); // const iterator needed for vector<bool>
  bool fst = 1;
  for (const auto &a : x)
    pr(!fst ? ", " : "", a), fst = 0;
  pr("}");
}

void print() { pr("\n"); } // print w/ spaces
template <class T, class... Ts> void print(const T &t, const Ts &...ts) {
  pr(t);
  if (sizeof...(ts))
    pr(" ");
  print(ts...);
}
} // namespace output

using namespace output;

int main() {
  ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  int N;
  cin >> N;
  vector<pair<ll, ll>> points(N);
  F0R(i, N) {
    ll x, y;
    cin >> x >> y;
    points[i] = {x, y};
  }

  bool par = (points[0].first ^ points[0].second) & 1;
  F0R(i, N) if (((points[i].first ^ points[i].second) & 1) != par) {
    print(-1);
    return 0;
  }

  vll sizes;
  vector<string> ans(N);

  if (!par) {
    F0R(i, N) points[i].second++;
    sizes.push_back(1);
    F0R(i, N) ans[i] += "D";
  }

  R0F(d, 32) {
    sizes.push_back(1ll << d);
    F0R(i, N) {
      ll x = points[i].first;
      ll y = points[i].second;
      if (y >= x && y >= -x) {
        ans[i] += "U";
        points[i].second -= 1ll << d;
      } else if (y >= x && y < -x) {
        ans[i] += "L";
        points[i].first += 1ll << d;
      } else if (y < x && y >= -x) {
        ans[i] += "R";
        points[i].first -= 1ll << d;
      } else if (y < x && y < -x) {
        ans[i] += "D";
        points[i].second += 1ll << d;
      }
    }
  }
  F0R(i, N) { assert(points[i].first == 0 && points[i].second == 0); }

  print(sizes.size());
  for (ll x : sizes)
    cout << x << " ";
  cout << endl;
  F0R(i, N) print(ans[i]);
}