QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#641934#8544. Colorful Graph 2maspyAC ✓624ms64608kbC++2023.0kb2024-10-15 03:37:122024-10-15 03:37:12

Judging History

你现在查看的是最新测评结果

  • [2024-10-15 03:37:12]
  • 评测
  • 测评结果:AC
  • 用时:624ms
  • 内存:64608kb
  • [2024-10-15 03:37:12]
  • 提交

answer

#line 1 "/home/maspy/compro/library/my_template.hpp"
#if defined(LOCAL)
#include <my_template_compiled.hpp>
#else

// https://codeforces.com/blog/entry/96344
#pragma GCC optimize("Ofast,unroll-loops")
// いまの CF だとこれ入れると動かない?
// #pragma GCC target("avx2,popcnt")

#include <bits/stdc++.h>

using namespace std;

using ll = long long;
using u8 = uint8_t;
using u16 = uint16_t;
using u32 = uint32_t;
using u64 = uint64_t;
using i128 = __int128;
using u128 = unsigned __int128;
using f128 = __float128;

template <class T>
constexpr T infty = 0;
template <>
constexpr int infty<int> = 1'010'000'000;
template <>
constexpr ll infty<ll> = 2'020'000'000'000'000'000;
template <>
constexpr u32 infty<u32> = infty<int>;
template <>
constexpr u64 infty<u64> = infty<ll>;
template <>
constexpr i128 infty<i128> = i128(infty<ll>) * 2'000'000'000'000'000'000;
template <>
constexpr double infty<double> = infty<ll>;
template <>
constexpr long double infty<long double> = infty<ll>;

using pi = pair<ll, ll>;
using vi = vector<ll>;
template <class T>
using vc = vector<T>;
template <class T>
using vvc = vector<vc<T>>;
template <class T>
using vvvc = vector<vvc<T>>;
template <class T>
using vvvvc = vector<vvvc<T>>;
template <class T>
using vvvvvc = vector<vvvvc<T>>;
template <class T>
using pq = priority_queue<T>;
template <class T>
using pqg = priority_queue<T, vector<T>, greater<T>>;

#define vv(type, name, h, ...) vector<vector<type>> name(h, vector<type>(__VA_ARGS__))
#define vvv(type, name, h, w, ...) vector<vector<vector<type>>> name(h, vector<vector<type>>(w, vector<type>(__VA_ARGS__)))
#define vvvv(type, name, a, b, c, ...) \
  vector<vector<vector<vector<type>>>> name(a, vector<vector<vector<type>>>(b, vector<vector<type>>(c, vector<type>(__VA_ARGS__))))

// https://trap.jp/post/1224/
#define FOR1(a) for (ll _ = 0; _ < ll(a); ++_)
#define FOR2(i, a) for (ll i = 0; i < ll(a); ++i)
#define FOR3(i, a, b) for (ll i = a; i < ll(b); ++i)
#define FOR4(i, a, b, c) for (ll i = a; i < ll(b); i += (c))
#define FOR1_R(a) for (ll i = (a)-1; i >= ll(0); --i)
#define FOR2_R(i, a) for (ll i = (a)-1; i >= ll(0); --i)
#define FOR3_R(i, a, b) for (ll i = (b)-1; i >= ll(a); --i)
#define overload4(a, b, c, d, e, ...) e
#define overload3(a, b, c, d, ...) d
#define FOR(...) overload4(__VA_ARGS__, FOR4, FOR3, FOR2, FOR1)(__VA_ARGS__)
#define FOR_R(...) overload3(__VA_ARGS__, FOR3_R, FOR2_R, FOR1_R)(__VA_ARGS__)

#define FOR_subset(t, s) for (ll t = (s); t >= 0; t = (t == 0 ? -1 : (t - 1) & (s)))
#define all(x) x.begin(), x.end()
#define len(x) ll(x.size())
#define elif else if

#define eb emplace_back
#define mp make_pair
#define mt make_tuple
#define fi first
#define se second

#define stoi stoll

int popcnt(int x) { return __builtin_popcount(x); }
int popcnt(u32 x) { return __builtin_popcount(x); }
int popcnt(ll x) { return __builtin_popcountll(x); }
int popcnt(u64 x) { return __builtin_popcountll(x); }
int popcnt_mod_2(int x) { return __builtin_parity(x); }
int popcnt_mod_2(u32 x) { return __builtin_parity(x); }
int popcnt_mod_2(ll x) { return __builtin_parityll(x); }
int popcnt_mod_2(u64 x) { return __builtin_parityll(x); }
// (0, 1, 2, 3, 4) -> (-1, 0, 1, 1, 2)
int topbit(int x) { return (x == 0 ? -1 : 31 - __builtin_clz(x)); }
int topbit(u32 x) { return (x == 0 ? -1 : 31 - __builtin_clz(x)); }
int topbit(ll x) { return (x == 0 ? -1 : 63 - __builtin_clzll(x)); }
int topbit(u64 x) { return (x == 0 ? -1 : 63 - __builtin_clzll(x)); }
// (0, 1, 2, 3, 4) -> (-1, 0, 1, 0, 2)
int lowbit(int x) { return (x == 0 ? -1 : __builtin_ctz(x)); }
int lowbit(u32 x) { return (x == 0 ? -1 : __builtin_ctz(x)); }
int lowbit(ll x) { return (x == 0 ? -1 : __builtin_ctzll(x)); }
int lowbit(u64 x) { return (x == 0 ? -1 : __builtin_ctzll(x)); }

template <typename T>
T floor(T a, T b) {
  return a / b - (a % b && (a ^ b) < 0);
}
template <typename T>
T ceil(T x, T y) {
  return floor(x + y - 1, y);
}
template <typename T>
T bmod(T x, T y) {
  return x - y * floor(x, y);
}
template <typename T>
pair<T, T> divmod(T x, T y) {
  T q = floor(x, y);
  return {q, x - q * y};
}

template <typename T, typename U>
T SUM(const vector<U> &A) {
  T sm = 0;
  for (auto &&a: A) sm += a;
  return sm;
}

#define MIN(v) *min_element(all(v))
#define MAX(v) *max_element(all(v))
#define LB(c, x) distance((c).begin(), lower_bound(all(c), (x)))
#define UB(c, x) distance((c).begin(), upper_bound(all(c), (x)))
#define UNIQUE(x) sort(all(x)), x.erase(unique(all(x)), x.end()), x.shrink_to_fit()

template <typename T>
T POP(deque<T> &que) {
  T a = que.front();
  que.pop_front();
  return a;
}
template <typename T>
T POP(pq<T> &que) {
  T a = que.top();
  que.pop();
  return a;
}
template <typename T>
T POP(pqg<T> &que) {
  T a = que.top();
  que.pop();
  return a;
}
template <typename T>
T POP(vc<T> &que) {
  T a = que.back();
  que.pop_back();
  return a;
}

template <typename F>
ll binary_search(F check, ll ok, ll ng, bool check_ok = true) {
  if (check_ok) assert(check(ok));
  while (abs(ok - ng) > 1) {
    auto x = (ng + ok) / 2;
    (check(x) ? ok : ng) = x;
  }
  return ok;
}
template <typename F>
double binary_search_real(F check, double ok, double ng, int iter = 100) {
  FOR(iter) {
    double x = (ok + ng) / 2;
    (check(x) ? ok : ng) = x;
  }
  return (ok + ng) / 2;
}

template <class T, class S>
inline bool chmax(T &a, const S &b) {
  return (a < b ? a = b, 1 : 0);
}
template <class T, class S>
inline bool chmin(T &a, const S &b) {
  return (a > b ? a = b, 1 : 0);
}

// ? は -1
vc<int> s_to_vi(const string &S, char first_char) {
  vc<int> A(S.size());
  FOR(i, S.size()) { A[i] = (S[i] != '?' ? S[i] - first_char : -1); }
  return A;
}

template <typename T, typename U>
vector<T> cumsum(vector<U> &A, int off = 1) {
  int N = A.size();
  vector<T> B(N + 1);
  FOR(i, N) { B[i + 1] = B[i] + A[i]; }
  if (off == 0) B.erase(B.begin());
  return B;
}

// stable sort
template <typename T>
vector<int> argsort(const vector<T> &A) {
  vector<int> ids(len(A));
  iota(all(ids), 0);
  sort(all(ids), [&](int i, int j) { return (A[i] == A[j] ? i < j : A[i] < A[j]); });
  return ids;
}

// A[I[0]], A[I[1]], ...
template <typename T>
vc<T> rearrange(const vc<T> &A, const vc<int> &I) {
  vc<T> B(len(I));
  FOR(i, len(I)) B[i] = A[I[i]];
  return B;
}

template <typename T, typename... Vectors>
void concat(vc<T> &first, const Vectors &... others) {
  vc<T> &res = first;
  (res.insert(res.end(), others.begin(), others.end()), ...);
}
#endif
#line 1 "/home/maspy/compro/library/other/io.hpp"
#define FASTIO
#include <unistd.h>

// https://judge.yosupo.jp/submission/21623
namespace fastio {
static constexpr uint32_t SZ = 1 << 17;
char ibuf[SZ];
char obuf[SZ];
char out[100];
// pointer of ibuf, obuf
uint32_t pil = 0, pir = 0, por = 0;

struct Pre {
  char num[10000][4];
  constexpr Pre() : num() {
    for (int i = 0; i < 10000; i++) {
      int n = i;
      for (int j = 3; j >= 0; j--) {
        num[i][j] = n % 10 | '0';
        n /= 10;
      }
    }
  }
} constexpr pre;

inline void load() {
  memcpy(ibuf, ibuf + pil, pir - pil);
  pir = pir - pil + fread(ibuf + pir - pil, 1, SZ - pir + pil, stdin);
  pil = 0;
  if (pir < SZ) ibuf[pir++] = '\n';
}

inline void flush() {
  fwrite(obuf, 1, por, stdout);
  por = 0;
}

void rd(char &c) {
  do {
    if (pil + 1 > pir) load();
    c = ibuf[pil++];
  } while (isspace(c));
}

void rd(string &x) {
  x.clear();
  char c;
  do {
    if (pil + 1 > pir) load();
    c = ibuf[pil++];
  } while (isspace(c));
  do {
    x += c;
    if (pil == pir) load();
    c = ibuf[pil++];
  } while (!isspace(c));
}

template <typename T>
void rd_real(T &x) {
  string s;
  rd(s);
  x = stod(s);
}

template <typename T>
void rd_integer(T &x) {
  if (pil + 100 > pir) load();
  char c;
  do
    c = ibuf[pil++];
  while (c < '-');
  bool minus = 0;
  if constexpr (is_signed<T>::value || is_same_v<T, i128>) {
    if (c == '-') { minus = 1, c = ibuf[pil++]; }
  }
  x = 0;
  while ('0' <= c) { x = x * 10 + (c & 15), c = ibuf[pil++]; }
  if constexpr (is_signed<T>::value || is_same_v<T, i128>) {
    if (minus) x = -x;
  }
}

void rd(int &x) { rd_integer(x); }
void rd(ll &x) { rd_integer(x); }
void rd(i128 &x) { rd_integer(x); }
void rd(u32 &x) { rd_integer(x); }
void rd(u64 &x) { rd_integer(x); }
void rd(u128 &x) { rd_integer(x); }
void rd(double &x) { rd_real(x); }
void rd(long double &x) { rd_real(x); }
void rd(f128 &x) { rd_real(x); }

template <class T, class U>
void rd(pair<T, U> &p) {
  return rd(p.first), rd(p.second);
}
template <size_t N = 0, typename T>
void rd_tuple(T &t) {
  if constexpr (N < std::tuple_size<T>::value) {
    auto &x = std::get<N>(t);
    rd(x);
    rd_tuple<N + 1>(t);
  }
}
template <class... T>
void rd(tuple<T...> &tpl) {
  rd_tuple(tpl);
}

template <size_t N = 0, typename T>
void rd(array<T, N> &x) {
  for (auto &d: x) rd(d);
}
template <class T>
void rd(vc<T> &x) {
  for (auto &d: x) rd(d);
}

void read() {}
template <class H, class... T>
void read(H &h, T &... t) {
  rd(h), read(t...);
}

void wt(const char c) {
  if (por == SZ) flush();
  obuf[por++] = c;
}
void wt(const string s) {
  for (char c: s) wt(c);
}
void wt(const char *s) {
  size_t len = strlen(s);
  for (size_t i = 0; i < len; i++) wt(s[i]);
}

template <typename T>
void wt_integer(T x) {
  if (por > SZ - 100) flush();
  if (x < 0) { obuf[por++] = '-', x = -x; }
  int outi;
  for (outi = 96; x >= 10000; outi -= 4) {
    memcpy(out + outi, pre.num[x % 10000], 4);
    x /= 10000;
  }
  if (x >= 1000) {
    memcpy(obuf + por, pre.num[x], 4);
    por += 4;
  } else if (x >= 100) {
    memcpy(obuf + por, pre.num[x] + 1, 3);
    por += 3;
  } else if (x >= 10) {
    int q = (x * 103) >> 10;
    obuf[por] = q | '0';
    obuf[por + 1] = (x - q * 10) | '0';
    por += 2;
  } else
    obuf[por++] = x | '0';
  memcpy(obuf + por, out + outi + 4, 96 - outi);
  por += 96 - outi;
}

template <typename T>
void wt_real(T x) {
  ostringstream oss;
  oss << fixed << setprecision(15) << double(x);
  string s = oss.str();
  wt(s);
}

void wt(int x) { wt_integer(x); }
void wt(ll x) { wt_integer(x); }
void wt(i128 x) { wt_integer(x); }
void wt(u32 x) { wt_integer(x); }
void wt(u64 x) { wt_integer(x); }
void wt(u128 x) { wt_integer(x); }
void wt(double x) { wt_real(x); }
void wt(long double x) { wt_real(x); }
void wt(f128 x) { wt_real(x); }

template <class T, class U>
void wt(const pair<T, U> val) {
  wt(val.first);
  wt(' ');
  wt(val.second);
}
template <size_t N = 0, typename T>
void wt_tuple(const T t) {
  if constexpr (N < std::tuple_size<T>::value) {
    if constexpr (N > 0) { wt(' '); }
    const auto x = std::get<N>(t);
    wt(x);
    wt_tuple<N + 1>(t);
  }
}
template <class... T>
void wt(tuple<T...> tpl) {
  wt_tuple(tpl);
}
template <class T, size_t S>
void wt(const array<T, S> val) {
  auto n = val.size();
  for (size_t i = 0; i < n; i++) {
    if (i) wt(' ');
    wt(val[i]);
  }
}
template <class T>
void wt(const vector<T> val) {
  auto n = val.size();
  for (size_t i = 0; i < n; i++) {
    if (i) wt(' ');
    wt(val[i]);
  }
}

void print() { wt('\n'); }
template <class Head, class... Tail>
void print(Head &&head, Tail &&... tail) {
  wt(head);
  if (sizeof...(Tail)) wt(' ');
  print(forward<Tail>(tail)...);
}

// gcc expansion. called automaticall after main.
void __attribute__((destructor)) _d() { flush(); }
} // namespace fastio
using fastio::read;
using fastio::print;
using fastio::flush;

#if defined(LOCAL)
#define SHOW(...) SHOW_IMPL(__VA_ARGS__, SHOW6, SHOW5, SHOW4, SHOW3, SHOW2, SHOW1)(__VA_ARGS__)
#define SHOW_IMPL(_1, _2, _3, _4, _5, _6, NAME, ...) NAME
#define SHOW1(x) print(#x, "=", (x)), flush()
#define SHOW2(x, y) print(#x, "=", (x), #y, "=", (y)), flush()
#define SHOW3(x, y, z) print(#x, "=", (x), #y, "=", (y), #z, "=", (z)), flush()
#define SHOW4(x, y, z, w) print(#x, "=", (x), #y, "=", (y), #z, "=", (z), #w, "=", (w)), flush()
#define SHOW5(x, y, z, w, v) print(#x, "=", (x), #y, "=", (y), #z, "=", (z), #w, "=", (w), #v, "=", (v)), flush()
#define SHOW6(x, y, z, w, v, u) print(#x, "=", (x), #y, "=", (y), #z, "=", (z), #w, "=", (w), #v, "=", (v), #u, "=", (u)), flush()
#else
#define SHOW(...)
#endif

#define INT(...)   \
  int __VA_ARGS__; \
  read(__VA_ARGS__)
#define LL(...)   \
  ll __VA_ARGS__; \
  read(__VA_ARGS__)
#define U32(...)   \
  u32 __VA_ARGS__; \
  read(__VA_ARGS__)
#define U64(...)   \
  u64 __VA_ARGS__; \
  read(__VA_ARGS__)
#define STR(...)      \
  string __VA_ARGS__; \
  read(__VA_ARGS__)
#define CHAR(...)   \
  char __VA_ARGS__; \
  read(__VA_ARGS__)
#define DBL(...)      \
  double __VA_ARGS__; \
  read(__VA_ARGS__)

#define VEC(type, name, size) \
  vector<type> name(size);    \
  read(name)
#define VV(type, name, h, w)                     \
  vector<vector<type>> name(h, vector<type>(w)); \
  read(name)

void YES(bool t = 1) { print(t ? "YES" : "NO"); }
void NO(bool t = 1) { YES(!t); }
void Yes(bool t = 1) { print(t ? "Yes" : "No"); }
void No(bool t = 1) { Yes(!t); }
void yes(bool t = 1) { print(t ? "yes" : "no"); }
void no(bool t = 1) { yes(!t); }
#line 2 "/home/maspy/compro/library/graph/base.hpp"

template <typename T>
struct Edge {
  int frm, to;
  T cost;
  int id;
};

template <typename T = int, bool directed = false>
struct Graph {
  static constexpr bool is_directed = directed;
  int N, M;
  using cost_type = T;
  using edge_type = Edge<T>;
  vector<edge_type> edges;
  vector<int> indptr;
  vector<edge_type> csr_edges;
  vc<int> vc_deg, vc_indeg, vc_outdeg;
  bool prepared;

  class OutgoingEdges {
  public:
    OutgoingEdges(const Graph* G, int l, int r) : G(G), l(l), r(r) {}

    const edge_type* begin() const {
      if (l == r) { return 0; }
      return &G->csr_edges[l];
    }

    const edge_type* end() const {
      if (l == r) { return 0; }
      return &G->csr_edges[r];
    }

  private:
    const Graph* G;
    int l, r;
  };

  bool is_prepared() { return prepared; }

  Graph() : N(0), M(0), prepared(0) {}
  Graph(int N) : N(N), M(0), prepared(0) {}

  void build(int n) {
    N = n, M = 0;
    prepared = 0;
    edges.clear();
    indptr.clear();
    csr_edges.clear();
    vc_deg.clear();
    vc_indeg.clear();
    vc_outdeg.clear();
  }

  void add(int frm, int to, T cost = 1, int i = -1) {
    assert(!prepared);
    assert(0 <= frm && 0 <= to && to < N);
    if (i == -1) i = M;
    auto e = edge_type({frm, to, cost, i});
    edges.eb(e);
    ++M;
  }

#ifdef FASTIO
  // wt, off
  void read_tree(bool wt = false, int off = 1) { read_graph(N - 1, wt, off); }

  void read_graph(int M, bool wt = false, int off = 1) {
    for (int m = 0; m < M; ++m) {
      INT(a, b);
      a -= off, b -= off;
      if (!wt) {
        add(a, b);
      } else {
        T c;
        read(c);
        add(a, b, c);
      }
    }
    build();
  }
#endif

  void build() {
    assert(!prepared);
    prepared = true;
    indptr.assign(N + 1, 0);
    for (auto&& e: edges) {
      indptr[e.frm + 1]++;
      if (!directed) indptr[e.to + 1]++;
    }
    for (int v = 0; v < N; ++v) { indptr[v + 1] += indptr[v]; }
    auto counter = indptr;
    csr_edges.resize(indptr.back() + 1);
    for (auto&& e: edges) {
      csr_edges[counter[e.frm]++] = e;
      if (!directed)
        csr_edges[counter[e.to]++] = edge_type({e.to, e.frm, e.cost, e.id});
    }
  }

  OutgoingEdges operator[](int v) const {
    assert(prepared);
    return {this, indptr[v], indptr[v + 1]};
  }

  vc<int> deg_array() {
    if (vc_deg.empty()) calc_deg();
    return vc_deg;
  }

  pair<vc<int>, vc<int>> deg_array_inout() {
    if (vc_indeg.empty()) calc_deg_inout();
    return {vc_indeg, vc_outdeg};
  }

  int deg(int v) {
    if (vc_deg.empty()) calc_deg();
    return vc_deg[v];
  }

  int in_deg(int v) {
    if (vc_indeg.empty()) calc_deg_inout();
    return vc_indeg[v];
  }

  int out_deg(int v) {
    if (vc_outdeg.empty()) calc_deg_inout();
    return vc_outdeg[v];
  }

#ifdef FASTIO
  void debug() {
    print("Graph");
    if (!prepared) {
      print("frm to cost id");
      for (auto&& e: edges) print(e.frm, e.to, e.cost, e.id);
    } else {
      print("indptr", indptr);
      print("frm to cost id");
      FOR(v, N) for (auto&& e: (*this)[v]) print(e.frm, e.to, e.cost, e.id);
    }
  }
#endif

  vc<int> new_idx;
  vc<bool> used_e;

  // G における頂点 V[i] が、新しいグラフで i になるようにする
  // {G, es}
  // sum(deg(v)) の計算量になっていて、
  // 新しいグラフの n+m より大きい可能性があるので注意
  Graph<T, directed> rearrange(vc<int> V, bool keep_eid = 0) {
    if (len(new_idx) != N) new_idx.assign(N, -1);
    int n = len(V);
    FOR(i, n) new_idx[V[i]] = i;
    Graph<T, directed> G(n);
    vc<int> history;
    FOR(i, n) {
      for (auto&& e: (*this)[V[i]]) {
        if (len(used_e) <= e.id) used_e.resize(e.id + 1);
        if (used_e[e.id]) continue;
        int a = e.frm, b = e.to;
        if (new_idx[a] != -1 && new_idx[b] != -1) {
          history.eb(e.id);
          used_e[e.id] = 1;
          int eid = (keep_eid ? e.id : -1);
          G.add(new_idx[a], new_idx[b], e.cost, eid);
        }
      }
    }
    FOR(i, n) new_idx[V[i]] = -1;
    for (auto&& eid: history) used_e[eid] = 0;
    G.build();
    return G;
  }

  Graph<T, true> to_directed_tree(int root = -1) {
    if (root == -1) root = 0;
    assert(!is_directed && prepared && M == N - 1);
    Graph<T, true> G1(N);
    vc<int> par(N, -1);
    auto dfs = [&](auto& dfs, int v) -> void {
      for (auto& e: (*this)[v]) {
        if (e.to == par[v]) continue;
        par[e.to] = v, dfs(dfs, e.to);
      }
    };
    dfs(dfs, root);
    for (auto& e: edges) {
      int a = e.frm, b = e.to;
      if (par[a] == b) swap(a, b);
      assert(par[b] == a);
      G1.add(a, b, e.cost);
    }
    G1.build();
    return G1;
  }

private:
  void calc_deg() {
    assert(vc_deg.empty());
    vc_deg.resize(N);
    for (auto&& e: edges) vc_deg[e.frm]++, vc_deg[e.to]++;
  }

  void calc_deg_inout() {
    assert(vc_indeg.empty());
    vc_indeg.resize(N);
    vc_outdeg.resize(N);
    for (auto&& e: edges) { vc_indeg[e.to]++, vc_outdeg[e.frm]++; }
  }
};
#line 2 "/home/maspy/compro/library/ds/segtree/segtree.hpp"

template <class Monoid>
struct SegTree {
  using MX = Monoid;
  using X = typename MX::value_type;
  using value_type = X;
  vc<X> dat;
  int n, log, size;

  SegTree() {}
  SegTree(int n) { build(n); }
  template <typename F>
  SegTree(int n, F f) {
    build(n, f);
  }
  SegTree(const vc<X>& v) { build(v); }

  void build(int m) {
    build(m, [](int i) -> X { return MX::unit(); });
  }
  void build(const vc<X>& v) {
    build(len(v), [&](int i) -> X { return v[i]; });
  }
  template <typename F>
  void build(int m, F f) {
    n = m, log = 1;
    while ((1 << log) < n) ++log;
    size = 1 << log;
    dat.assign(size << 1, MX::unit());
    FOR(i, n) dat[size + i] = f(i);
    FOR_R(i, 1, size) update(i);
  }

  X get(int i) { return dat[size + i]; }
  vc<X> get_all() { return {dat.begin() + size, dat.begin() + size + n}; }

  void update(int i) { dat[i] = Monoid::op(dat[2 * i], dat[2 * i + 1]); }
  void set(int i, const X& x) {
    assert(i < n);
    dat[i += size] = x;
    while (i >>= 1) update(i);
  }

  void multiply(int i, const X& x) {
    assert(i < n);
    i += size;
    dat[i] = Monoid::op(dat[i], x);
    while (i >>= 1) update(i);
  }

  X prod(int L, int R) {
    assert(0 <= L && L <= R && R <= n);
    X vl = Monoid::unit(), vr = Monoid::unit();
    L += size, R += size;
    while (L < R) {
      if (L & 1) vl = Monoid::op(vl, dat[L++]);
      if (R & 1) vr = Monoid::op(dat[--R], vr);
      L >>= 1, R >>= 1;
    }
    return Monoid::op(vl, vr);
  }

  X prod_all() { return dat[1]; }

  template <class F>
  int max_right(F check, int L) {
    assert(0 <= L && L <= n && check(Monoid::unit()));
    if (L == n) return n;
    L += size;
    X sm = Monoid::unit();
    do {
      while (L % 2 == 0) L >>= 1;
      if (!check(Monoid::op(sm, dat[L]))) {
        while (L < size) {
          L = 2 * L;
          if (check(Monoid::op(sm, dat[L]))) { sm = Monoid::op(sm, dat[L++]); }
        }
        return L - size;
      }
      sm = Monoid::op(sm, dat[L++]);
    } while ((L & -L) != L);
    return n;
  }

  template <class F>
  int min_left(F check, int R) {
    assert(0 <= R && R <= n && check(Monoid::unit()));
    if (R == 0) return 0;
    R += size;
    X sm = Monoid::unit();
    do {
      --R;
      while (R > 1 && (R % 2)) R >>= 1;
      if (!check(Monoid::op(dat[R], sm))) {
        while (R < size) {
          R = 2 * R + 1;
          if (check(Monoid::op(dat[R], sm))) { sm = Monoid::op(dat[R--], sm); }
        }
        return R + 1 - size;
      }
      sm = Monoid::op(dat[R], sm);
    } while ((R & -R) != R);
    return 0;
  }

  // prod_{l<=i<r} A[i xor x]
  X xor_prod(int l, int r, int xor_val) {
    static_assert(Monoid::commute);
    X x = Monoid::unit();
    for (int k = 0; k < log + 1; ++k) {
      if (l >= r) break;
      if (l & 1) { x = Monoid::op(x, dat[(size >> k) + ((l++) ^ xor_val)]); }
      if (r & 1) { x = Monoid::op(x, dat[(size >> k) + ((--r) ^ xor_val)]); }
      l /= 2, r /= 2, xor_val /= 2;
    }
    return x;
  }
};
#line 2 "/home/maspy/compro/library/alg/monoid/min_idx.hpp"

template <typename T, bool tie_is_left = true>
struct Monoid_Min_Idx {
  using value_type = pair<T, int>;
  using X = value_type;
  static constexpr bool is_small(const X& x, const X& y) {
    if (x.fi < y.fi) return true;
    if (x.fi > y.fi) return false;
    return (tie_is_left ? (x.se < y.se) : (x.se >= y.se));
  }
  static X op(X x, X y) { return (is_small(x, y) ? x : y); }
  static constexpr X unit() { return {infty<T>, -1}; }
  static constexpr bool commute = true;
};
#line 6 "main.cpp"

void solve() {
  INT(N, M);
  Graph<int, 0> G(N);
  FOR(M) {
    INT(a, b);
    G.add(a, b);
  }
  FOR(i, N) G.add(i, (i + 1) % N);
  G.build();

  auto deg = G.deg_array();
  SegTree<Monoid_Min_Idx<int>> seg(N, [&](int v) -> pair<int, int> { return {deg[v], v}; });

  vc<int> ANS(N, -1);
  vc<int> rest(N, 1);

  auto dfs = [&](auto& dfs) -> void {
    auto [d, v] = seg.prod_all();
    if (v == -1) return;
    rest[v] = 0;
    seg.set(v, {infty<int>, -1});
    vc<int> nbd;
    for (auto& e: G[v]) {
      if (!rest[e.to]) continue;
      nbd.eb(e.to);
    }
    for (auto& t: nbd) {
      deg[t]--;
      seg.set(t, {deg[t], t});
    }
    dfs(dfs);
    if (nbd.empty()) {
      ANS[v] = 0;
      return;
    }
    ANS[v] = ANS[nbd[0]] ^ 1;
  };
  dfs(dfs);
  string S;
  FOR(v, N) S += (ANS[v] == 0 ? "R" : "B");
  print(S);
}

signed main() {
  INT(T);
  FOR(T) solve();
}

这程序好像有点Bug,我给组数据试试?

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3940kb

input:

3
3 0
4 1
1 3
6 3
0 2
2 4
4 0

output:

RBR
RBBR
RBBRBR

result:

ok ok (3 test cases)

Test #2:

score: 0
Accepted
time: 98ms
memory: 4004kb

input:

100000
9 6
2 0
4 6
3 6
0 6
0 7
2 6
3 0
5 2
2 4
2 0
6 3
1 5
4 1
2 4
9 6
3 1
6 4
8 1
3 6
1 6
8 6
3 0
7 4
3 0
4 0
6 4
3 1
7 4
5 1
5 0
3 1
1 4
4 1
1 3
6 3
2 4
4 0
2 0
6 3
3 0
1 3
5 3
7 4
0 5
2 5
5 1
3 5
8 5
4 1
5 1
5 0
1 3
5 7
3 0
8 5
0 2
4 6
0 6
0 3
4 0
8 5
5 1
1 4
5 0
3 1
5 7
3 0
10 7
0 2
9 2
5 8
3 9
...

output:

RBBRRBBBR
RBR
RBBBR
RBRBBR
RBRRRBBBR
RBR
RRBBBBR
RRBBBBR
RBBR
RBRBBR
RRBBBR
RRRRBBR
RRBBBBBR
RBR
RBBBRBBR
RRBBBBBR
RBR
RBBBBRRBBR
RBRRRBBR
RBBBRRBBBR
RBRRRBBBBR
RBBBRBBBBR
RBR
RBRBBBR
BRBBBR
BRRBBBBR
RBBR
RBBBRBR
RBBBBRRRBR
RBBRBBR
BRBRRBBR
RBRRBR
RBBRBR
RBR
RBR
RBRRRBBBR
RRRBBBR
RRBBR
BRRRBBBRBR
RR...

result:

ok ok (100000 test cases)

Test #3:

score: 0
Accepted
time: 92ms
memory: 4040kb

input:

100000
8 4
5 3
5 1
6 1
3 1
7 4
5 0
4 1
4 0
3 1
4 0
8 1
4 7
3 0
3 0
8 1
1 3
3 0
9 4
6 0
3 0
3 1
5 0
7 0
6 2
4 2
0 4
7 3
0 3
0 4
1 3
5 1
3 0
10 4
6 8
5 2
1 5
5 3
5 1
1 4
3 0
9 3
5 0
8 6
6 0
3 0
5 2
1 3
1 4
9 0
6 1
4 2
8 1
1 3
5 0
8 2
3 1
6 1
5 1
3 0
8 3
3 0
7 4
7 5
7 2
5 3
1 3
10 3
8 0
0 3
8 5
9 4
3 0...

output:

BRBRBBRB
RRBBBBR
BRBR
BRBRBRBR
RBR
RBR
RBBRBRBR
RBR
BBRRBRRBR
RBRBRBR
BRBBRB
BBRRRBR
RBRBR
RBBBBRBBRB
RBRBR
RBR
RBRBRBBBR
RBR
BRBBR
RBRBRBRBR
BRBBRB
RBBRBRBR
RBRBR
BRBBRBRB
RBRBR
BRBRBBBR
BRRBBRB
BRBRRBRBRB
RBRBBRBBR
RBRRBBBBR
BRBRBR
BRRBBRB
RBR
RBBRBRBRBR
RRBBBR
BRBRBBBRB
RBBBR
RBBRBBRBRB
RBBBR
RBB...

result:

ok ok (100000 test cases)

Test #4:

score: 0
Accepted
time: 327ms
memory: 4256kb

input:

19452
78 75
50 52
61 64
19 21
21 27
52 54
75 5
47 58
15 13
47 66
69 71
66 68
33 36
27 32
15 17
66 60
74 7
63 61
41 13
45 71
30 28
68 71
18 13
13 42
47 55
76 1
19 32
61 66
5 2
22 24
74 71
42 44
59 47
66 46
26 21
49 52
56 58
54 47
52 48
21 25
19 41
10 42
45 74
48 54
39 41
41 18
75 6
39 33
33 37
31 28
...

output:

RRRBBBBBBRRBBRBBRRBRBBBRRRRRRBBBBBBRRRBRBBBRRBRRRBBRRBBBRBBBRRBBBBBRRBRRBBRRBR
RBBBRBBBRBRRRBRRRRRBRRBRRRBRBBBRRBRRBBRRRRRRBRRRRRRRBBBRRBBBBBRBBBRBBRRRBBBBBBBBRBBBBBBR
RBRRBRBBBBBBBBRRRRBBBRBRRRRRBRRBBRRBRRRBBBBBRRRBBRRRRBBRRBBBBBRRRRBBRRRBBBBR
RBRRRRRBBBBBBBBRRRRRRBRRRBBRRBBRBRRRRRBRRRBBRBBRRRBRRRR...

result:

ok ok (19452 test cases)

Test #5:

score: 0
Accepted
time: 281ms
memory: 4004kb

input:

19457
72 56
1 70
0 70
2 70
19 69
64 42
34 32
55 57
22 68
54 48
26 28
41 23
13 10
68 21
62 59
29 26
53 51
30 41
41 38
15 7
66 64
3 15
23 42
47 54
9 7
6 4
47 42
64 22
67 22
17 3
37 35
23 64
30 38
59 61
24 41
70 17
19 70
30 32
17 19
19 21
14 7
2 17
29 24
6 15
69 21
62 55
9 14
16 3
25 29
15 4
53 50
35 3...

output:

RRRBBRRBRRBRRRRRRRBRBBBBBBBRRRBRBRRBRRBBRRBRRBRBBRRRRBRBRRRBRBRBRBBRRBBR
BRRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBR
BRRBRBRBRBRBRBRBRBRBRBRBBRBRBBRRBRBRBRBRBRBRBBBRBRBRBRBRBRBRBRBRBRBRBRBR
RBRBBRBRBBRBRRBRBRBRBRRRBRBRBRBRBRBRBRBBRRBRBRBRBRBRBRRBRRRBRBRBRBRBBBRBRBRBBRBRBBRBRBR
RBBRBRRBRBBBBRBRBBBRRB...

result:

ok ok (19457 test cases)

Test #6:

score: 0
Accepted
time: 392ms
memory: 4396kb

input:

2011
404 401
326 324
85 82
297 38
198 201
196 205
299 8
206 188
326 329
280 277
378 5
155 153
367 360
282 277
378 6
375 377
315 317
92 81
227 229
174 176
141 145
276 272
218 216
43 45
205 188
163 221
205 193
223 226
307 317
387 383
23 33
52 50
199 201
367 358
394 396
177 179
170 167
104 102
263 265
...

output:

BRBBRRRRRBRRRRRRBBBBBBRBBBBRBRRRRRRBBRBBRRBRBBRRBBBRRBBBBBRRRRRBBBBRRBBRBRBBBBBBRBBRRRRBRBBBRRRBBRRBRBRBBRBBBRBBRRBBRBBRRRRBBRRBBRRBBBRRRRRBRRRBBBRBBBBRBBRRRRRRRBRBBBBRBBBBBBBRRRBBRRRRBBBBBRRBBBRBBRRRBBRBRRRRRBBBBBRBBRRRRRBBBRRBRRRBRBBBBBBRRBRRBBBBRRRRRRRBRRBBBRRBRRRBBRRRBRRRRRRBBBBBBBBRBRBBRRBRRRBB...

result:

ok ok (2011 test cases)

Test #7:

score: 0
Accepted
time: 330ms
memory: 4680kb

input:

1958
908 775
369 374
638 644
308 310
686 758
596 593
432 410
730 732
556 476
356 354
711 742
149 144
582 609
714 716
895 667
831 837
37 10
17 13
880 882
453 457
266 269
297 301
577 113
114 576
115 166
716 727
130 163
708 745
337 317
250 303
712 714
893 668
344 351
319 322
276 264
107 109
567 466
415...

output:

RRRRBBBRRRRRRBRRBRRRRRBBBRBBRRBRRRBRRBBRRRBBRBRRBRBRRBRRBBRBRRRBRRRBRRBBBRBRBBBRRRRRBBRBBRBRRRRRBBRBBRBRRRBRBBBBRBBBBRRBRRRRBBBBRBBBRBRRBRBBRRRRBRRBBRBRRRRBRRBBBRBRBRRBBBBRRRBRBBRBRBBRRRRBRBRBRRBBRRRBRBRRBBBRBBRBBRBRBRBRBRBBRBBRBRRBBRRBBBRRBBRRRBBRBRBBRBBBBRBBBRRBRBBRRRBBBRBRBRBBBRRBBRBBRBBRBRRBBBRB...

result:

ok ok (1958 test cases)

Test #8:

score: 0
Accepted
time: 456ms
memory: 6832kb

input:

204
1066 1063
466 462
569 566
239 241
125 134
418 422
147 142
99 103
380 305
100 103
589 585
336 315
126 134
176 1042
995 431
966 975
857 854
112 110
841 862
1018 1015
202 266
860 853
86 94
254 252
454 448
523 675
864 867
221 216
710 707
184 286
984 931
70 65
165 31
634 642
557 555
763 770
537 529
4...

output:

BRRBBBRRBBBBRRRBRRBBBRBBRRBRRBRRRRBBBRRRRBBBBRBBRBBBBRRRRRRBBRRRBBBRRRRRRRRRRRRRBBBRBRRBBRRRRBBRBRRBBRRRRRBRRRRBBBBBRRRRRRBBBBBBRBBRRBRBBBRBRRRBBRBBBRBBBBRRBBBRBBRRBBRBRRRRRBBRRRRRRRBRRRBBBBBRRBBBBBBBRRRRRRRRBRRRRRBBBRRRRRBRRRRRBBBBRRRRBBBBRRRBBBRRBRBRBRRRRRRRBRRBBBBBRRBRBBBBRRRBBBRRRBBBBRRRBBBBRRBB...

result:

ok ok (204 test cases)

Test #9:

score: 0
Accepted
time: 367ms
memory: 6496kb

input:

203
2148 1719
1557 1562
1834 1826
661 646
1733 1747
668 670
1449 1497
256 254
1571 1569
1726 1701
142 135
1981 1979
1966 1992
2107 2104
1209 1196
752 895
2035 2033
621 618
3 6
2093 2110
437 479
641 643
566 519
640 628
626 678
1694 1726
1520 1522
1434 1430
1127 1130
2021 2014
1349 1347
378 383
1475 1...

output:

BRBBRBRBBRBRBRRRRBBBRRRRBRBRRBRBBRRRRBRRBRRRBRRRBRRBBBBRBBRBRBBRBRRBBRRRRBBBBBBRBRBRBBRBRBBRRBRBBRBBBRRRRRRRBBRRBRBRRBRRBBRRBRRBRRRRBRBRBBRBRRBRRBBBBRRRBRBRBRRRBBBRBBRRBBRBBRRRBRRBRRBRRRBBRBBRBBBRBRBRBBBRBRRRBBRBBRBRRBBRBRRRBRBRBRBRBRBRBRRBBBRRRBRBBBBBRRRRBRBRBBBRBBRBBBRBBRBBRBBRBBRRBRRBBBBRRBBRBBRB...

result:

ok ok (203 test cases)

Test #10:

score: 0
Accepted
time: 583ms
memory: 31440kb

input:

28
75972 75969
72982 72984
57195 57198
62938 62906
8473 8556
37842 37858
33380 33354
1503 1501
6490 6468
3231 3212
66806 66785
66178 66191
16644 16646
28283 28285
7797 7805
27304 50764
62274 62338
70175 70182
37760 37762
10872 10845
2554 2552
22131 22129
25754 25685
30543 30473
48058 48056
49029 490...

output:

RBBBRRBRBRBBBRRRBBRRBBRBBBRRRBBBRBRRBRRBBBBRRBBRBBBRRRRBBRBRRRBBRBRBBRRRBBBBBRBBBBRRBBRRRBRRRRRBBRRRBRBBBBBRBBBBRRRBBBBBRRBBRRBBBBRRBBBRRRRBRRBRRBBRRRRBRRRRRRRBBBRRRRRRRBBBBBBBBRRBBRRRRBRBBBBRRRRRRBRRBBRBBRBRRRRRRRBRRRRRBBBBRRRBBBBRBBRRBRRBBBBBBBBRBBRRRBBBBBRRBBRBBRRBRBBBBBBBBBBRRRBBRRRBRRBBBBRRBRRR...

result:

ok ok (28 test cases)

Test #11:

score: 0
Accepted
time: 462ms
memory: 28860kb

input:

22
51680 33612
36516 36505
51193 51188
35606 35610
33625 33614
40437 40292
42236 42238
10393 10282
8774 8772
51621 51618
45268 45266
38275 38351
10322 10324
1643 1640
24399 24397
5679 5647
4270 4267
20292 20262
20865 20860
36134 36075
19151 19148
47570 47564
9019 8996
11628 11631
29914 29916
1038 10...

output:

BRBRBRRBBBRBRBRBRBRBRRRRRBBBBBRBRRBBRRRBRRBRRBRRBBRBRBRBRBRBBRRBRRBBRBRBRRBBRRRRBRBBBRBBBRRBRRBBRBRBBBRBRBBBRBRBRBBRRRBRRBBRBBRBRRRRBRRBRBBBRBRBBBBRRBRBBRBBRRRRBBRRRRBBRBBRBRBRBRBBBRBBRBRRRBRBBRBBRRBBRRBRRBRRBRRRBRBBBBRBRBRBRBRBBBBRBRBBRBRRBBRRRBRBRBRRBRBRBBRBRBRRBRBRRRRRBRBRBRBBRBRRBBRBRBBRBRBRBBBR...

result:

ok ok (22 test cases)

Test #12:

score: 0
Accepted
time: 605ms
memory: 58052kb

input:

19
136603 136600
85502 85506
69490 69362
56462 56450
110823 110787
116554 116560
124319 124410
23116 23109
4083 4088
57777 57784
70730 71751
116728 116719
131667 12876
37328 37322
41430 41432
65505 65508
117991 118000
34432 34430
43863 43866
22396 22399
24787 24780
75822 75672
6394 6392
101553 10154...

output:

RBRBBRBBRBBBRRRBBRBBRBRBBBBRRRBBBBBBBRRRRBRRBBBBBRRRRRRRBRRBRBRRBBBRRBBRBBBBBBBRRRRRRRRRBBRBRRBRRBBBBBRBBBBBRRRRRRRRBRBBBRRRRRBBBBBBRRBRRBRBBRBBBBRRRRRRRRBBBRRRBBBBBBRRBBRRBBBBBBRRRRRRRRBBBBRRRBBBBBRBBRRBRBBBRRRRRRRRBRBBBRBBBBRRRRRRBBBRRBBRBBBBBRRBRBBRRBBRBBBRRRRRRBRRRRRRBBBRBBBBRBBBRRRRRBBRBBBBBBBB...

result:

ok ok (19 test cases)

Test #13:

score: 0
Accepted
time: 615ms
memory: 59796kb

input:

16
124187 124184
88839 88837
17978 17976
21272 21270
29658 29667
111832 111828
20094 20063
73985 73982
94995 95033
60692 60694
19487 19485
82334 82332
68259 68108
13084 13088
55968 55929
44398 44393
87484 87482
65430 65422
16074 16072
16601 16606
42819 42821
118813 118811
106043 106026
45213 45223
4...

output:

BBRBBBRRBBBRRRRRBBBBRRBBRBBBBBBRRBBBBBRRRRRBBBBBRRRBBBRRRRRRRBBRRBBRBBBRRRBBBBRRRBBBRRRRRBRRRRBBBRRBBBBRRRBBBBRBBRRRRBBBRRRRRRBBBBRRBBBBRRBRRRBRRRBBRBBBRRRRRBBBBRRBBRBRBBBBBBBRRBBRRBBBBBRRBBBRRBBRRRBBBBBRRBRRBRBBBRRRRRRRBBRBBBRRRBRRRBBBRBRRRRBBRBBBBBBRRBBRBBBRRRRRBBRRBBBRBBBBBRRRRBBBBBBBRRRBBBRRBRBB...

result:

ok ok (16 test cases)

Test #14:

score: 0
Accepted
time: 570ms
memory: 57624kb

input:

22
122017 122014
1179 1176
97888 97876
25483 25503
84408 84410
10133 10131
53606 53590
116827 117048
76688 76686
24844 24848
9492 9487
12639 12656
111226 111211
73530 73519
5002 5000
64381 64349
41789 41791
14188 14190
110584 110586
82836 82842
22211 22272
118847 10501
104753 104758
114734 114807
44...

output:

RBBRRBBRBRBBBRRRRRBRRRBRRBBRRRRRBBRRRBBBBBRRBBRBBRRRRRRRRRRRRRRBBBBBRRRBBRRBBBBBBBBRRBRRRBBBRRRBBRRRRRRRRBBBBBBRBBRRBBBBRBBBBRRRRBBBBRBRRRBBBRRRRRRRRBRRRRRRRRBRBBBBBBRRRRBBRBBBBRRBBBBBBBRRBBRRRRBBRRRRBBBBBRRBBBRRRBBBRRBBBRRRRBBRBBBBBRRRRBRRRRRRBBBRRBBRRBBBRBRRRBRRBBRBRRBBBBBRRBBBBRBRRRRRBBBRRRRRBRRR...

result:

ok ok (22 test cases)

Test #15:

score: 0
Accepted
time: 580ms
memory: 58200kb

input:

20
119847 119844
71555 57579
37082 37057
33081 33085
48871 48876
40673 40671
63830 63985
119626 119606
10490 7113
67201 67210
91389 91387
37297 37321
35131 35134
32911 32917
72016 56381
74952 55433
48681 48679
39509 42993
4228 4265
63690 63692
11724 11726
97047 97050
45007 44987
20212 20210
95366 95...

output:

BRRRBBBRRBBBBBRRRRRRBRRRBBBRBBBRBBBBRRBBRRRRRBBRBBRRBBBBRRRRRBRRBBRBRBBRRRBBRRRRRRBBRRRRBBRBBBRRRBBRBBBRBBRRRBBBBRRRBBBRBRBRRBBRRBBBRRRRRRBBRBRRRBBBBBBRBBBBBBRRBRBBBRBRBBBBBRRRBRRRBBRRRRRRBBBBBBBBRRRRBRRRRRBBBBRRRRRRBBBRRRBRRBBBRRRBBBRRRRRBBRBRBBBBBRRBRBBBBBBRRRBBBBBRRRRRBBBRRRRRBRRRBRRBBBBBRBBBRBRR...

result:

ok ok (20 test cases)

Test #16:

score: 0
Accepted
time: 580ms
memory: 53856kb

input:

18
117677 117674
73934 73928
116508 116504
53002 53005
97882 97884
63398 63396
70383 70379
33677 33675
12156 12110
54866 54851
14557 14533
48952 48964
35218 35214
33374 33372
17191 17346
84421 84591
46852 46854
63731 63733
74432 74436
56751 56757
114129 114132
89518 94225
39138 39152
23287 23318
541...

output:

RBBRBBBBBRRRRBBBBRRBRRRRRRRRBBBBBBBBBRRRRBBBRBRRRBBBBRRRRBBBRBBRRRRBBRRRRBBBBRRRBBBBBRBBRRBRRRRBBBRBRRRRRBBBBRRBRRBBRRBBBBRRRBBBRBRBBBBRBRRRRBBBRRRRRBRBBRBBBBBRBBRRBBBBRRRBBRRBBBRRRBRRBBBBRRBRBBBBRRRRRRBRBBBBRRBRRRBBBBBBBBBBRRRBBRBBBBBBRRRBRRBBRBRRBBRRRRBBBBRRBBRRRRBRRRBBBBBRRBBBBRRBRRRBBRBRRRBBBBRR...

result:

ok ok (18 test cases)

Test #17:

score: 0
Accepted
time: 529ms
memory: 56912kb

input:

18
168338 167931
81111 81097
6165 166401
77942 77940
75410 75412
73459 73392
97679 97670
46358 46345
63207 63257
106712 106707
68698 68702
99616 99614
125470 125464
107237 107239
86288 86291
129844 129043
47141 47117
85244 85229
126735 119093
17578 17612
91043 91041
150597 150615
140041 139910
41759...

output:

RRBBBBBRRRRBBBRRRRBBRBBRBBBRRRBRRBRRRBRRBBRRBBRBBRBRBBRBRRRRBBBBBRRBRRBRRRRBBBRBBBBBBRRBRRRBBRRRRBBBBRBBRRRBBRRBBRRBBRRBBBBRRBBBRRRBRBRBBRRBRRBRRBRRBRRBBRRBBBBRBBBBRRRBBRRRRRBBRRRRRRBBBBBRRBRBBRRBBRRRBRRBRRRRRBBBBBBBRRRRBRRRRRBBRBRBBBRRRRBBRRRRRBBBBBBBRRRRBBBBBRRRBRBBRRRRBBRRRBBBBBBRRBRRRBBRRRRRBRRR...

result:

ok ok (18 test cases)

Test #18:

score: 0
Accepted
time: 153ms
memory: 3936kb

input:

100000
10 7
7 2
0 7
7 3
4 6
0 2
8 0
4 7
10 7
4 6
8 6
2 0
0 6
3 6
0 3
6 9
10 7
6 1
0 8
8 1
4 2
6 2
8 6
4 6
10 7
5 2
5 9
5 7
2 9
7 9
3 5
1 9
10 7
5 8
7 5
0 2
8 4
0 8
2 4
8 2
10 7
2 0
4 6
0 4
0 3
9 4
7 9
7 4
10 7
9 6
4 1
5 1
7 9
2 4
9 1
1 6
10 7
6 8
8 4
2 4
9 4
4 6
2 9
2 0
10 7
9 7
7 4
7 0
0 2
0 3
4 6
...

output:

RBRRRBBBBR
BRRBBRRBBR
RRRBBRBRBR
RBRRBBRBBR
RBBRRRBBBR
RBBBBRRBBR
RBBRRRBBBR
RBBRRBRBBR
RBBBRBBBBR
RBRRBBBRBR
RRRRRRBBBR
BRRBBBRRBR
BRRRRRBBBR
RRRRRBBBBR
RRBBBBRRBR
BRRRRBBBBR
RBBBBRBBBR
RRBBRRBBBR
BRRBBRRBBR
RRRBBRBBBR
RBBBRRBBBR
RRRBBBBBBR
RBBRRRRBBR
RRRRBBRBBR
RRRRRBBBBR
RBBRRRBBBR
RBRRBBBBBR
RRB...

result:

ok ok (100000 test cases)

Test #19:

score: 0
Accepted
time: 151ms
memory: 3932kb

input:

100000
10 7
2 6
2 5
9 1
8 1
4 2
2 8
2 7
10 7
3 6
1 8
1 9
8 2
4 6
8 3
8 6
10 7
3 9
3 0
3 8
7 4
0 2
7 3
4 6
10 7
7 4
7 5
7 3
2 7
1 8
7 1
0 8
10 7
3 1
9 6
5 3
9 3
1 9
8 6
3 6
10 7
1 8
5 3
5 2
8 2
6 2
6 8
9 1
10 7
6 1
2 5
0 6
3 5
9 7
2 6
0 7
10 7
1 9
4 2
5 7
8 5
2 5
2 8
2 9
10 7
3 0
0 2
8 0
7 5
4 0
0 7
...

output:

RBRBBBBBBR
BRRRRBBRBR
RBBBBRRRBR
RRRRRRBBBR
BRBBRRBRBR
BRRRBBBRBR
RRRRBBBBBR
RBRBBRBBBR
RBBBBRBBBR
RBBBRBBBBR
RRBBRRRBBR
RBRBBRRBBR
RBBRBBBBBR
RBBBBBBBBR
RBBRBBBBBR
RRBBBBBRBR
RBBRRBBBBR
RBBRRBBBBR
RBBRBBBBBR
RBRRBBBBBR
RRBBRRBBBR
RRBBBBBBBR
RBBBBBBBBR
BRRBBBBBBR
RBRRBBRRBR
RBRRBBBRBR
RRRRBBRBBR
RBR...

result:

ok ok (100000 test cases)

Test #20:

score: 0
Accepted
time: 613ms
memory: 60756kb

input:

5
200000 199997
90872 90858
23618 23598
82655 82662
143408 145950
26040 26147
131588 131580
199204 199211
122236 122137
191306 191313
55395 55391
33219 33190
139859 115847
196528 196563
114255 109758
155883 155885
100455 15329
124391 124387
99513 99516
157112 157114
7194 7180
102171 102173
164185 16...

output:

RRBBBBRRBBBBBRRRBBBRBBBRRRRRBRRBRRBBBRRRRBBRBRBBBBBBBBBRBBRRBBBBBBBBBBRRBBRRRRRBBRBRBBBRRBRRRBBBBBBRRBBBBBRRRRRRRRBRRRRRRRBBBBBBBRRBRRRBBBRRBRRBBBBRRBBBBRRBRRBBBRRRBRRBBBRRBRRBBRRRBRBBBBRBBBRRRBRBRRBBBRRRRRRBBBBRBRRBRRRRBBBRRBBRRBBBRBBBBBBRRBBBBBBRRBRBBRRBBRBBRRBBRRRRRBBRBRRBRRRBBBBBBBRRRRRBRRRBRRRB...

result:

ok ok (5 test cases)

Test #21:

score: 0
Accepted
time: 624ms
memory: 60024kb

input:

5
200000 199997
124837 124739
157171 157658
146305 161499
108140 108138
110167 97065
121474 121480
35024 35018
125671 125690
82981 82983
192460 192463
71317 71315
197126 197129
104709 104694
61487 61479
5826 189647
162909 163310
130658 130656
62222 62224
35701 35719
18271 18287
149226 149352
56063 1...

output:

RBBBRRBBRBRRBRBBBRRRRRRRBRRBBBRRRRBBRRRRBBRRRRBBBRRRBBRRRRBBBBBRRRBRRRRRRBBBBBRBBBRRRRRRBBBBBBBBRRRRRBBBRRRRRBBBRRRBBBBBBRRBRRRBRRRBBBBRRRRBBBRRRRRRRBBBBBBRRRRRBBBBRRRRBBBRRBBBBRBRRRRBBBRBBRBBRRRRBRRBRBRBRRBBBRBBBBBBBBRBBBRRRRRBBBBRRRBBRBBBRRRRBBRRRBBRRBBBRBBBRBRBBRRBBRRRBBBBBRRBRRRRBBRBBRRRBRRBRRBR...

result:

ok ok (5 test cases)

Test #22:

score: 0
Accepted
time: 526ms
memory: 31296kb

input:

25
86431 86428
0 52950
0 10703
11848 0
54871 0
58613 0
0 47091
2465 0
67724 0
0 12491
39333 0
0 69525
0 35199
0 49588
0 20534
0 46051
83783 0
46232 0
55604 0
0 75847
36755 0
18480 0
42875 0
0 44509
0 7032
45240 0
47691 0
0 28317
9261 0
84383 0
46623 0
0 46363
0 70115
85905 0
0 74166
0 31251
0 27175
...

output:

RBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB...

result:

ok ok (25 test cases)

Test #23:

score: 0
Accepted
time: 525ms
memory: 64608kb

input:

21
177689 177686
0 40477
0 53852
8385 0
112060 0
91834 0
0 170130
155993 0
116459 0
0 58141
0 117492
0 47783
85326 0
0 146894
164860 0
69921 0
0 135915
0 45829
0 177001
0 47919
0 78860
79305 0
17549 0
0 162411
86413 0
0 36166
0 168053
175198 0
0 155557
0 37678
0 31283
133824 0
0 153452
56414 0
0 245...

output:

RBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB...

result:

ok ok (21 test cases)

Test #24:

score: 0
Accepted
time: 550ms
memory: 32440kb

input:

10
100000 99989
38056 38054
39094 39092
72080 72088
46180 46182
93784 93782
25272 25276
20638 20640
44168 44166
82224 82222
33076 33074
4568 4572
75644 75646
47736 47732
37876 37872
28686 28688
52488 52486
79332 79330
80958 80960
6584 6592
12392 12388
89016 89018
13848 13852
12342 12344
67148 67146
...

output:

BRRBRBBRRBRBBRBRRBBRBRBRRBBRBRRBBRBRRBRBBRBRRBBRRBBRRBRBBRRBBRRBRBRBBRBRRBBRRBBRBRBRRBBRRBBRRBBRBRRBRBBRBRRBBRRBRBRBBRRBBRBRRBBRBRBRRBRBBRRBRBBRRBBRBRBRRBBRBRRBBRRBRBRBBRRBBRRBRBBRRBBRBRRBBRBRRBBRBRRBBRRBRBBRRBRBBRRBRBBRBRRBBRRBBRBRRBBRRBBRBRBRRBBRBRRBBRBRRBRBBRRBRBBRRBRBBRRBRBBRRBRBBRBRRBRBBRBRRBBR...

result:

ok ok (10 test cases)

Test #25:

score: 0
Accepted
time: 606ms
memory: 59288kb

input:

5
200000 199988
9610 9612
75558 75560
190896 190904
53392 53394
5568 5564
69696 69632
176388 176384
142418 142420
88128 88126
15744 15760
100536 100540
139774 139776
65078 65076
136656 136672
19304 19300
53552 53548
99028 99030
112488 112484
116956 116952
139392 139390
191474 191476
120180 120176
15...

output:

BRRBBRBRRBBRBRRBRBBRBRRBBRRBRBBRBRRBRBBRRBRBBRRBRBBRRBRBBRRBRBBRRBRBBRRBBRBRRBBRRBBRBRRBRBBRRBRBBRRBRBBRRBRBBRBRRBBRBRRBRBRBBRRBBRRBRBRBBRRBBRBRRBBRRBRBBRBRRBBRRBBRRBBRBRRBRBBRRBRBBRRBRBBRBRRBBRBRRBBRBRBRRBBRRBBRRBBRBRBRRBBRRBRBBRRBBRBRRBRBBRRBBRRBRBRBBRRBRBRBBRRBBRBRRBBRRBBRBRRBBRBRRBBRBRRBBRBRRBBR...

result:

ok ok (5 test cases)

Test #26:

score: 0
Accepted
time: 377ms
memory: 50212kb

input:

5
200000 0
200000 0
200000 0
200000 0
200000 0

output:

BRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBRBR...

result:

ok ok (5 test cases)

Extra Test:

score: 0
Extra Test Passed