QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#596747#9424. Stop the Castle 2ucup-team987#AC ✓156ms34480kbC++2320.1kb2024-09-28 16:23:122024-09-28 16:23:13

Judging History

This is the latest submission verdict.

  • [2024-09-28 16:23:13]
  • Judged
  • Verdict: AC
  • Time: 156ms
  • Memory: 34480kb
  • [2024-09-28 16:23:12]
  • Submitted

answer

/**
 * date   : 2024-09-28 17:23:04
 * author : Nyaan
 */

#define NDEBUG

using namespace std;

// intrinstic
#include <immintrin.h>

#include <algorithm>
#include <array>
#include <bitset>
#include <cassert>
#include <cctype>
#include <cfenv>
#include <cfloat>
#include <chrono>
#include <cinttypes>
#include <climits>
#include <cmath>
#include <complex>
#include <cstdarg>
#include <cstddef>
#include <cstdint>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <deque>
#include <fstream>
#include <functional>
#include <initializer_list>
#include <iomanip>
#include <ios>
#include <iostream>
#include <istream>
#include <iterator>
#include <limits>
#include <list>
#include <map>
#include <memory>
#include <new>
#include <numeric>
#include <ostream>
#include <queue>
#include <random>
#include <set>
#include <sstream>
#include <stack>
#include <streambuf>
#include <string>
#include <tr2/dynamic_bitset>
#include <tuple>
#include <type_traits>
#include <typeinfo>
#include <unordered_map>
#include <unordered_set>
#include <utility>
#include <vector>

// utility

namespace Nyaan {
using ll = long long;
using i64 = long long;
using u64 = unsigned long long;
using i128 = __int128_t;
using u128 = __uint128_t;

template <typename T>
using V = vector<T>;
template <typename T>
using VV = vector<vector<T>>;
using vi = vector<int>;
using vl = vector<long long>;
using vd = V<double>;
using vs = V<string>;
using vvi = vector<vector<int>>;
using vvl = vector<vector<long long>>;
template <typename T>
using minpq = priority_queue<T, vector<T>, greater<T>>;

template <typename T, typename U>
struct P : pair<T, U> {
  template <typename... Args>
  constexpr P(Args... args) : pair<T, U>(args...) {}

  using pair<T, U>::first;
  using pair<T, U>::second;

  P &operator+=(const P &r) {
    first += r.first;
    second += r.second;
    return *this;
  }
  P &operator-=(const P &r) {
    first -= r.first;
    second -= r.second;
    return *this;
  }
  P &operator*=(const P &r) {
    first *= r.first;
    second *= r.second;
    return *this;
  }
  template <typename S>
  P &operator*=(const S &r) {
    first *= r, second *= r;
    return *this;
  }
  P operator+(const P &r) const { return P(*this) += r; }
  P operator-(const P &r) const { return P(*this) -= r; }
  P operator*(const P &r) const { return P(*this) *= r; }
  template <typename S>
  P operator*(const S &r) const {
    return P(*this) *= r;
  }
  P operator-() const { return P{-first, -second}; }
};

using pl = P<ll, ll>;
using pi = P<int, int>;
using vp = V<pl>;

constexpr int inf = 1001001001;
constexpr long long infLL = 4004004004004004004LL;

template <typename T>
int sz(const T &t) {
  return t.size();
}

template <typename T, typename U>
inline bool amin(T &x, U y) {
  return (y < x) ? (x = y, true) : false;
}
template <typename T, typename U>
inline bool amax(T &x, U y) {
  return (x < y) ? (x = y, true) : false;
}

template <typename T>
inline T Max(const vector<T> &v) {
  return *max_element(begin(v), end(v));
}
template <typename T>
inline T Min(const vector<T> &v) {
  return *min_element(begin(v), end(v));
}
template <typename T>
inline long long Sum(const vector<T> &v) {
  return accumulate(begin(v), end(v), 0LL);
}

template <typename T>
int lb(const vector<T> &v, const T &a) {
  return lower_bound(begin(v), end(v), a) - begin(v);
}
template <typename T>
int ub(const vector<T> &v, const T &a) {
  return upper_bound(begin(v), end(v), a) - begin(v);
}

constexpr long long TEN(int n) {
  long long ret = 1, x = 10;
  for (; n; x *= x, n >>= 1) ret *= (n & 1 ? x : 1);
  return ret;
}

template <typename T, typename U>
pair<T, U> mkp(const T &t, const U &u) {
  return make_pair(t, u);
}

template <typename T>
vector<T> mkrui(const vector<T> &v, bool rev = false) {
  vector<T> ret(v.size() + 1);
  if (rev) {
    for (int i = int(v.size()) - 1; i >= 0; i--) ret[i] = v[i] + ret[i + 1];
  } else {
    for (int i = 0; i < int(v.size()); i++) ret[i + 1] = ret[i] + v[i];
  }
  return ret;
};

template <typename T>
vector<T> mkuni(const vector<T> &v) {
  vector<T> ret(v);
  sort(ret.begin(), ret.end());
  ret.erase(unique(ret.begin(), ret.end()), ret.end());
  return ret;
}

template <typename F>
vector<int> mkord(int N, F f) {
  vector<int> ord(N);
  iota(begin(ord), end(ord), 0);
  sort(begin(ord), end(ord), f);
  return ord;
}

template <typename T>
vector<int> mkinv(vector<T> &v) {
  int max_val = *max_element(begin(v), end(v));
  vector<int> inv(max_val + 1, -1);
  for (int i = 0; i < (int)v.size(); i++) inv[v[i]] = i;
  return inv;
}

vector<int> mkiota(int n) {
  vector<int> ret(n);
  iota(begin(ret), end(ret), 0);
  return ret;
}

template <typename T>
T mkrev(const T &v) {
  T w{v};
  reverse(begin(w), end(w));
  return w;
}

template <typename T>
bool nxp(T &v) {
  return next_permutation(begin(v), end(v));
}

// 返り値の型は入力の T に依存
// i 要素目 : [0, a[i])
template <typename T>
vector<vector<T>> product(const vector<T> &a) {
  vector<vector<T>> ret;
  vector<T> v;
  auto dfs = [&](auto rc, int i) -> void {
    if (i == (int)a.size()) {
      ret.push_back(v);
      return;
    }
    for (int j = 0; j < a[i]; j++) v.push_back(j), rc(rc, i + 1), v.pop_back();
  };
  dfs(dfs, 0);
  return ret;
}

// F : function(void(T&)), mod を取る操作
// T : 整数型のときはオーバーフローに注意する
template <typename T>
T Power(T a, long long n, const T &I, const function<void(T &)> &f) {
  T res = I;
  for (; n; f(a = a * a), n >>= 1) {
    if (n & 1) f(res = res * a);
  }
  return res;
}
// T : 整数型のときはオーバーフローに注意する
template <typename T>
T Power(T a, long long n, const T &I = T{1}) {
  return Power(a, n, I, function<void(T &)>{[](T &) -> void {}});
}

template <typename T>
T Rev(const T &v) {
  T res = v;
  reverse(begin(res), end(res));
  return res;
}

template <typename T>
vector<T> Transpose(const vector<T> &v) {
  using U = typename T::value_type;
  if(v.empty()) return {};
  int H = v.size(), W = v[0].size();
  vector res(W, T(H, U{}));
  for (int i = 0; i < H; i++) {
    for (int j = 0; j < W; j++) {
      res[j][i] = v[i][j];
    }
  }
  return res;
}

template <typename T>
vector<T> Rotate(const vector<T> &v, int clockwise = true) {
  using U = typename T::value_type;
  int H = v.size(), W = v[0].size();
  vector res(W, T(H, U{}));
  for (int i = 0; i < H; i++) {
    for (int j = 0; j < W; j++) {
      if (clockwise) {
        res[W - 1 - j][i] = v[i][j];
      } else {
        res[j][H - 1 - i] = v[i][j];
      }
    }
  }
  return res;
}

}  // namespace Nyaan


// bit operation

namespace Nyaan {
__attribute__((target("popcnt"))) inline int popcnt(const u64 &a) {
  return __builtin_popcountll(a);
}
inline int lsb(const u64 &a) { return a ? __builtin_ctzll(a) : 64; }
inline int ctz(const u64 &a) { return a ? __builtin_ctzll(a) : 64; }
inline int msb(const u64 &a) { return a ? 63 - __builtin_clzll(a) : -1; }
template <typename T>
inline int gbit(const T &a, int i) {
  return (a >> i) & 1;
}
template <typename T>
inline void sbit(T &a, int i, bool b) {
  if (gbit(a, i) != b) a ^= T(1) << i;
}
constexpr long long PW(int n) { return 1LL << n; }
constexpr long long MSK(int n) { return (1LL << n) - 1; }
}  // namespace Nyaan


// inout

namespace Nyaan {

template <typename T, typename U>
ostream &operator<<(ostream &os, const pair<T, U> &p) {
  os << p.first << " " << p.second;
  return os;
}
template <typename T, typename U>
istream &operator>>(istream &is, pair<T, U> &p) {
  is >> p.first >> p.second;
  return is;
}

template <typename T>
ostream &operator<<(ostream &os, const vector<T> &v) {
  int s = (int)v.size();
  for (int i = 0; i < s; i++) os << (i ? " " : "") << v[i];
  return os;
}
template <typename T>
istream &operator>>(istream &is, vector<T> &v) {
  for (auto &x : v) is >> x;
  return is;
}

istream &operator>>(istream &is, __int128_t &x) {
  string S;
  is >> S;
  x = 0;
  int flag = 0;
  for (auto &c : S) {
    if (c == '-') {
      flag = true;
      continue;
    }
    x *= 10;
    x += c - '0';
  }
  if (flag) x = -x;
  return is;
}

istream &operator>>(istream &is, __uint128_t &x) {
  string S;
  is >> S;
  x = 0;
  for (auto &c : S) {
    x *= 10;
    x += c - '0';
  }
  return is;
}

ostream &operator<<(ostream &os, __int128_t x) {
  if (x == 0) return os << 0;
  if (x < 0) os << '-', x = -x;
  string S;
  while (x) S.push_back('0' + x % 10), x /= 10;
  reverse(begin(S), end(S));
  return os << S;
}
ostream &operator<<(ostream &os, __uint128_t x) {
  if (x == 0) return os << 0;
  string S;
  while (x) S.push_back('0' + x % 10), x /= 10;
  reverse(begin(S), end(S));
  return os << S;
}

void in() {}
template <typename T, class... U>
void in(T &t, U &...u) {
  cin >> t;
  in(u...);
}

void out() { cout << "\n"; }
template <typename T, class... U, char sep = ' '>
void out(const T &t, const U &...u) {
  cout << t;
  if (sizeof...(u)) cout << sep;
  out(u...);
}

struct IoSetupNya {
  IoSetupNya() {
    cin.tie(nullptr);
    ios::sync_with_stdio(false);
    cout << fixed << setprecision(15);
    cerr << fixed << setprecision(7);
  }
} iosetupnya;

}  // namespace Nyaan


// debug


#ifdef NyaanDebug
#define trc(...) (void(0))
#else
#define trc(...) (void(0))
#endif

#ifdef NyaanLocal
#define trc2(...) (void(0))
#else
#define trc2(...) (void(0))
#endif


// macro

#define each(x, v) for (auto&& x : v)
#define each2(x, y, v) for (auto&& [x, y] : v)
#define all(v) (v).begin(), (v).end()
#define rep(i, N) for (long long i = 0; i < (long long)(N); i++)
#define repr(i, N) for (long long i = (long long)(N)-1; i >= 0; i--)
#define rep1(i, N) for (long long i = 1; i <= (long long)(N); i++)
#define repr1(i, N) for (long long i = (N); (long long)(i) > 0; i--)
#define reg(i, a, b) for (long long i = (a); i < (b); i++)
#define regr(i, a, b) for (long long i = (b)-1; i >= (a); i--)
#define fi first
#define se second
#define ini(...)   \
  int __VA_ARGS__; \
  in(__VA_ARGS__)
#define inl(...)         \
  long long __VA_ARGS__; \
  in(__VA_ARGS__)
#define ins(...)      \
  string __VA_ARGS__; \
  in(__VA_ARGS__)
#define in2(s, t)                           \
  for (int i = 0; i < (int)s.size(); i++) { \
    in(s[i], t[i]);                         \
  }
#define in3(s, t, u)                        \
  for (int i = 0; i < (int)s.size(); i++) { \
    in(s[i], t[i], u[i]);                   \
  }
#define in4(s, t, u, v)                     \
  for (int i = 0; i < (int)s.size(); i++) { \
    in(s[i], t[i], u[i], v[i]);             \
  }
#define die(...)             \
  do {                       \
    Nyaan::out(__VA_ARGS__); \
    return;                  \
  } while (0)


namespace Nyaan {
void solve();
}
int main() { Nyaan::solve(); }


//










namespace atcoder {

namespace internal {

template <class T> struct simple_queue {
    std::vector<T> payload;
    int pos = 0;
    void reserve(int n) { payload.reserve(n); }
    int size() const { return int(payload.size()) - pos; }
    bool empty() const { return pos == int(payload.size()); }
    void push(const T& t) { payload.push_back(t); }
    T& front() { return payload[pos]; }
    void clear() {
        payload.clear();
        pos = 0;
    }
    void pop() { pos++; }
};

}  // namespace internal

}  // namespace atcoder



namespace atcoder {

template <class Cap> struct mf_graph {
  public:
    mf_graph() : _n(0) {}
    mf_graph(int n) : _n(n), g(n) {}

    virtual int add_edge(int from, int to, Cap cap) {
        assert(0 <= from && from < _n);
        assert(0 <= to && to < _n);
        assert(0 <= cap);
        int m = int(pos.size());
        pos.push_back({from, int(g[from].size())});
        int from_id = int(g[from].size());
        int to_id = int(g[to].size());
        if (from == to) to_id++;
        g[from].push_back(_edge{to, to_id, cap});
        g[to].push_back(_edge{from, from_id, 0});
        return m;
    }

    struct edge {
        int from, to;
        Cap cap, flow;
    };

    edge get_edge(int i) {
        int m = int(pos.size());
        assert(0 <= i && i < m);
        auto _e = g[pos[i].first][pos[i].second];
        auto _re = g[_e.to][_e.rev];
        return edge{pos[i].first, _e.to, _e.cap + _re.cap, _re.cap};
    }
    std::vector<edge> edges() {
        int m = int(pos.size());
        std::vector<edge> result;
        for (int i = 0; i < m; i++) {
            result.push_back(get_edge(i));
        }
        return result;
    }
    void change_edge(int i, Cap new_cap, Cap new_flow) {
        int m = int(pos.size());
        assert(0 <= i && i < m);
        assert(0 <= new_flow && new_flow <= new_cap);
        auto& _e = g[pos[i].first][pos[i].second];
        auto& _re = g[_e.to][_e.rev];
        _e.cap = new_cap - new_flow;
        _re.cap = new_flow;
    }

    Cap flow(int s, int t) {
        return flow(s, t, std::numeric_limits<Cap>::max());
    }
    Cap flow(int s, int t, Cap flow_limit) {
        assert(0 <= s && s < _n);
        assert(0 <= t && t < _n);
        assert(s != t);

        std::vector<int> level(_n), iter(_n);
        internal::simple_queue<int> que;

        auto bfs = [&]() {
            std::fill(level.begin(), level.end(), -1);
            level[s] = 0;
            que.clear();
            que.push(s);
            while (!que.empty()) {
                int v = que.front();
                que.pop();
                for (auto e : g[v]) {
                    if (e.cap == 0 || level[e.to] >= 0) continue;
                    level[e.to] = level[v] + 1;
                    if (e.to == t) return;
                    que.push(e.to);
                }
            }
        };
        auto dfs = [&](auto self, int v, Cap up) {
            if (v == s) return up;
            Cap res = 0;
            int level_v = level[v];
            for (int& i = iter[v]; i < int(g[v].size()); i++) {
                _edge& e = g[v][i];
                if (level_v <= level[e.to] || g[e.to][e.rev].cap == 0) continue;
                Cap d =
                    self(self, e.to, std::min(up - res, g[e.to][e.rev].cap));
                if (d <= 0) continue;
                g[v][i].cap += d;
                g[e.to][e.rev].cap -= d;
                res += d;
                if (res == up) return res;
            }
            level[v] = _n;
            return res;
        };

        Cap flow = 0;
        while (flow < flow_limit) {
            bfs();
            if (level[t] == -1) break;
            std::fill(iter.begin(), iter.end(), 0);
            Cap f = dfs(dfs, t, flow_limit - flow);
            if (!f) break;
            flow += f;
        }
        return flow;
    }

    std::vector<bool> min_cut(int s) {
        std::vector<bool> visited(_n);
        internal::simple_queue<int> que;
        que.push(s);
        while (!que.empty()) {
            int p = que.front();
            que.pop();
            visited[p] = true;
            for (auto e : g[p]) {
                if (e.cap && !visited[e.to]) {
                    visited[e.to] = true;
                    que.push(e.to);
                }
            }
        }
        return visited;
    }

  private:
    int _n;
    struct _edge {
        int to, rev;
        Cap cap;
    };
    std::vector<std::pair<int, int>> pos;
    std::vector<std::vector<_edge>> g;
};

}  // namespace atcoder



namespace BipartiteGraphImpl {
using namespace atcoder;
struct BipartiteGraph : mf_graph<long long> {
  int L, R, s, t;
  bool is_flow;

  explicit BipartiteGraph(int N, int M)
      : mf_graph<long long>(N + M + 2),
        L(N),
        R(M),
        s(N + M),
        t(N + M + 1),
        is_flow(false) {
    for (int i = 0; i < L; i++) mf_graph<long long>::add_edge(s, i, 1);
    for (int i = 0; i < R; i++) mf_graph<long long>::add_edge(i + L, t, 1);
  }

  int add_edge(int n, int m, long long cap = 1) override {
    assert(0 <= n && n < L);
    assert(0 <= m && m < R);
    return mf_graph<long long>::add_edge(n, m + L, cap);
  }

  long long flow() {
    is_flow = true;
    return mf_graph<long long>::flow(s, t);
  }

  vector<pair<int, int>> MaximumMatching() {
    if (!is_flow) flow();
    auto es = mf_graph<long long>::edges();
    vector<pair<int, int>> ret;
    for (auto &e : es) {
      if (e.flow > 0 && e.from != s && e.to != t) {
        ret.emplace_back(e.from, e.to - L);
      }
    }
    return ret;
  }

  // call after calclating flow !
  pair<vector<int>, vector<int>> MinimumVertexCover() {
    if (!is_flow) flow();
    auto colored = PreCalc();
    vector<int> nl, nr;
    for (int i = 0; i < L; i++)
      if (!colored[i]) nl.push_back(i);
    for (int i = 0; i < R; i++)
      if (colored[i + L]) nr.push_back(i);
    return make_pair(nl, nr);
  }

  // call after calclating flow !
  pair<vector<int>, vector<int>> MaximumIndependentSet() {
    if (!is_flow) flow();
    auto colored = PreCalc();
    vector<int> nl, nr;
    for (int i = 0; i < L; i++)
      if (colored[i]) nl.push_back(i);
    for (int i = 0; i < R; i++)
      if (!colored[i + L]) nr.push_back(i);
    return make_pair(nl, nr);
  }

  vector<pair<int, int>> MinimumEdgeCover() {
    if (!is_flow) flow();
    auto es = MaximumMatching();
    vector<bool> useL(L), useR(R);
    for (auto &p : es) {
      useL[p.first] = true;
      useR[p.second] = true;
    }
    for (auto &e : mf_graph<long long>::edges()) {
      if (e.flow > 0 || e.from == s || e.to == t) continue;
      if (useL[e.from] == false || useR[e.to - L] == false) {
        es.emplace_back(e.from, e.to - L);
        useL[e.from] = useR[e.to - L] = true;
      }
    }
    return es;
  }

 private:
  vector<bool> PreCalc() {
    vector<vector<int>> ag(L + R);
    vector<bool> used(L, false);
    for (auto &e : mf_graph<long long>::edges()) {
      if (e.from == s || e.to == t) continue;
      if (e.flow > 0) {
        ag[e.to].push_back(e.from);
        used[e.from] = true;
      } else {
        ag[e.from].push_back(e.to);
      }
    }
    vector<bool> colored(L + R, false);
    auto dfs = [&](auto rc, int cur) -> void {
      for (auto &d : ag[cur]) {
        if (!colored[d]) colored[d] = true, rc(rc, d);
      }
    };
    for (int i = 0; i < L; i++)
      if (!used[i]) colored[i] = true, dfs(dfs, i);
    return colored;
  }
};

}  // namespace BipartiteGraphImpl

using BipartiteGraphImpl::BipartiteGraph;

/**
 * @brief 二部グラフのフロー
 * @docs docs/flow/flow-on-bipartite-graph.md
 */


using namespace Nyaan;

struct Data {
  int idx, lo, hi, interrupt;
};

void q() {
  inl(N, M, K);
  vl R(N + M), C(N + M);
  in2(R, C);

  V<Data> left, right;
  vi inv_l(N + M, -1), inv_r(N + M, -1);
  int ans = 0;
  rep(_, 2) {
    auto ord = mkord(N + M, [&](int i, int j) {
      if (R[i] == R[j]) return C[i] < C[j];
      return R[i] < R[j];
    });
    int i = 0;
    while (ord[i] >= N) i++;
    for (int j = i;; i = j) {
      j++;
      while (j < N + M and ord[j] >= N) j++;
      if (j == N + M) break;
      if (R[ord[i]] == R[ord[j]]) {
        ans++;
        if (i + 1 != j) {
          Data d;
          d.idx = R[ord[i]];
          d.lo = C[ord[i]];
          d.hi = C[ord[j]];
          d.interrupt = ord[i + 1] - N;
          for (int k = i + 1; k < j; k++) inv_l[ord[k]] = sz(left);
          left.push_back(d);
        }
      }
    }

    swap(R, C);
    swap(left, right);
    swap(inv_l, inv_r);
  }
  trc(sz(left), sz(right));

  BipartiteGraph bg(sz(left), sz(right));
  map<pair<int, int>, int> edges;

  rep(i, M) {
    if (inv_l[N + i] != -1 and inv_r[N + i] != -1) {
      bg.add_edge(inv_l[N + i], inv_r[N + i]);
      edges[{inv_l[N + i], inv_r[N + i]}] = i;
    }
  }
  bg.flow();
  auto mm = bg.MaximumMatching();

  // K 個配置するという話にする
  K = M - K;
  vi used(M, 0), col_l(sz(left)), col_r(sz(right));
  each2(u, v, mm) {
    if (K == 0) break;
    int idx = edges[{u, v}];
    used[idx] = 1;
    col_l[u] = col_r[v] = 1;
    K -= 1;
    ans -= 2;
  }
  rep(i, sz(left)) {
    if (K == 0) break;
    if (col_l[i] == 0) {
      int idx = left[i].interrupt;
      used[idx] = 1;
      col_l[i] = 1;
      K -= 1;
      ans -= 1;
    }
  }
  rep(i, sz(right)) {
    if (K == 0) break;
    if (col_r[i] == 0) {
      int idx = right[i].interrupt;
      used[idx] = 1;
      col_r[i] = 1;
      K -= 1;
      ans -= 1;
    }
  }
  rep(i, M) {
    if (K == 0) break;
    if (used[i] == 0) used[i] = 1, K--;
  }

  vi bns;
  rep(i, M) if (used[i] == 0) bns.push_back(i + 1);
  out(ans);
  out(bns);
}

void Nyaan::solve() {
  int t = 1;
  in(t);
  while (t--) q();
}

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

详细

Test #1:

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

input:

3
8 6 4
1 3
2 1
2 6
4 1
4 7
6 1
6 3
6 6
2 3
3 1
4 3
4 6
5 2
6 4
3 2 1
10 12
10 10
10 11
1 4
1 5
1 3 2
1 1
2 1
2 2
2 3

output:

4
2 3 5 6
2
2
0
2 3

result:

ok ok 3 cases (3 test cases)

Test #2:

score: 0
Accepted
time: 62ms
memory: 6652kb

input:

1224
11 17 14
7 3
4 2
8 13
3 15
3 4
5 11
10 2
3 3
8 6
7 11
2 3
10 4
1 3
12 1
2 5
11 9
11 6
11 10
8 15
1 5
9 14
4 11
1 6
10 7
7 6
11 4
8 4
1 11
18 3 2
14 8
2 14
13 13
9 12
14 12
5 6
8 1
10 5
8 6
8 9
6 6
7 5
12 11
6 11
13 5
1 10
7 6
14 5
6 15
2 4
11 1
1 6 4
14 14
13 9
9 3
10 12
7 5
8 13
9 14
1 9 8
4 9...

output:

7
3 4 5 6 7 8 9 10 11 12 13 15 16 17
15
2 3
0
3 4 5 6
0
2 3 4 5 6 7 8 9
11
1 3
8
1 2 3
0
1 2 3 4 5 6 7 8 9 10 11 12
1
5 6 7 9 10 11 12
8
17 18 19
1
1 2 3 4 5 6 7 8
7
6 8
10
13 14 15
1
10 11 12 13 14 15 16 17 18 19 20
0
1
1
2 3
0
5 6 7
7
8 11 12 13 14
2
10 11 12 13 14
4
3 4 5 6 7 8
1
18
1
4 5 6 7 8 9...

result:

ok ok 1224 cases (1224 test cases)

Test #3:

score: 0
Accepted
time: 143ms
memory: 34480kb

input:

1
86289 95092 40401
911 152
1 270
135 731
347 451
283 224
338 348
166 346
12 385
590 763
939 176
232 405
122 946
397 576
795 823
546 392
33 718
444 598
954 852
185 662
732 539
172 681
386 148
76 495
163 323
711 201
278 363
531 275
66 122
823 983
234 792
102 188
985 423
804 712
419 636
318 331
693 68...

output:

81531
5600 5601 5603 5605 5613 5614 5617 5618 5619 5622 5625 5628 5630 5633 5634 5636 5637 5638 5639 5640 5642 5643 5644 5646 5647 5648 5649 5650 5657 5659 5664 5665 5668 5672 5674 5675 5676 5679 5680 5684 5685 5687 5690 5691 5693 5696 5701 5702 5703 5704 5706 5707 5709 5717 5718 5719 5721 5722 5725...

result:

ok ok 1 cases (1 test case)

Test #4:

score: 0
Accepted
time: 102ms
memory: 19848kb

input:

1
99057 99722 73893
190482185 274379837
466851670 641324039
993028302 128875937
102891466 286559847
526771097 794238060
565736409 328262657
190329865 598878250
790626887 595298790
308031819 470646878
341575785 374318107
257299536 280924175
64420619 591124604
323023069 811512407
428956686 719615923
2...

output:

82045
1 2 5 6 8 9 10 11 13 15 16 17 18 19 20 21 22 24 25 27 28 29 30 33 34 35 36 37 38 39 41 43 44 45 46 47 49 50 51 52 54 55 56 57 59 60 61 62 63 65 67 68 69 70 71 72 75 76 79 80 81 82 83 87 89 90 91 92 93 94 95 96 99 100 101 102 104 105 106 107 108 109 110 111 112 113 114 115 118 119 120 124 127 1...

result:

ok ok 1 cases (1 test case)

Test #5:

score: 0
Accepted
time: 156ms
memory: 34080kb

input:

1
100000 99990 27662
913840909 999962982
690565691 31053
780601566 31053
54745498 31053
5383 859704869
538124857 999962982
5383 66851413
1444277 31053
119603839 999962982
999833258 543197820
999833258 349576387
999833258 759855830
999833258 124692224
266093388 999962982
5383 100041707
999833258 2843...

output:

100891
65619 65620 65621 65622 65623 65625 65626 65628 65629 65630 65631 65632 65633 65635 65636 65637 65638 65639 65640 65641 65643 65644 65645 65647 65649 65651 65654 65655 65656 65657 65658 65660 65661 65662 65663 65664 65665 65666 65667 65668 65669 65670 65671 65673 65674 65677 65678 65679 65680...

result:

ok ok 1 cases (1 test case)

Test #6:

score: 0
Accepted
time: 81ms
memory: 28728kb

input:

1
100000 49997 21428
9380 4333
9380 999999628
49202 4333
49202 999999628
50841 4333
50841 999999628
77418 4333
77418 999999628
95722 4333
95722 999999628
144002 4333
144002 999999628
234359 4333
234359 999999628
268942 4333
268942 999999628
288956 4333
288956 999999628
415094 4333
415094 999999628
4...

output:

100000
7099 7100 7102 7103 7104 7105 7106 7108 7110 7113 7114 7117 7119 7120 7122 7123 7126 7130 7131 7134 7135 7136 7140 7145 7149 7151 7154 7157 7158 7160 7162 7163 7167 7170 7172 7173 7174 7176 7178 7182 7183 7184 7188 7190 7197 7199 7201 7204 7205 7206 7208 7209 7211 7212 7213 7215 7216 7221 722...

result:

ok ok 1 cases (1 test case)

Test #7:

score: 0
Accepted
time: 67ms
memory: 15332kb

input:

1
100000 100000 76259
931427170 7
367311884 7
646435086 7
925372747 7
371054451 7
284185575 7
695090232 7
889183241 7
615617158 7
44230096 7
293281406 7
758261641 7
685549291 7
679471071 7
723138327 7
901136691 7
49281635 7
256352978 7
320188290 7
78730802 7
788131872 7
234735044 7
664906524 7
79430...

output:

76258
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 34 37 38 39 40 41 42 43 44 46 47 48 49 50 51 52 53 56 57 58 59 61 62 63 64 65 66 67 68 69 71 72 73 75 76 77 79 80 81 82 83 84 86 87 88 89 90 91 94 95 96 99 103 104 108 109 110 111 112 113 114 116 118 119 120 122 1...

result:

ok ok 1 cases (1 test case)

Test #8:

score: 0
Accepted
time: 53ms
memory: 20840kb

input:

1
100000 49999 24999
2 1
2 1000000000
3 1
3 1000000000
4 1
4 1000000000
5 1
5 1000000000
6 1
6 1000000000
7 1
7 1000000000
8 1
8 1000000000
9 1
9 1000000000
10 1
10 1000000000
11 1
11 1000000000
12 1
12 1000000000
13 1
13 1000000000
14 1
14 1000000000
15 1
15 1000000000
16 1
16 1000000000
17 1
17 10...

output:

99996
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 10...

result:

ok ok 1 cases (1 test case)

Test #9:

score: 0
Accepted
time: 57ms
memory: 11364kb

input:

556
16 6 3
2 1
2 1000000000
3 1
3 1000000000
4 1
4 1000000000
1 2
1000000000 2
1 3
1000000000 3
1 4
1000000000 4
1 5
1000000000 5
1 6
1000000000 6
2 3
3 3
3 2
4 2
2 4
4 4
32 12 6
2 1
2 1000000000
3 1
3 1000000000
4 1
4 1000000000
5 1
5 1000000000
6 1
6 1000000000
7 1
7 1000000000
8 1
8 1000000000
9 ...

output:

14
2 4 5
32
1 3 6 7 8 9
31
3 5 6 7 8 11 14 16
8
1
13
2 4
19
4 5 7 8 9
11
1 5 6
20
3 5 6
15
3 4 6 7
33
4 6 8 9 10 12 14
31
4 6 7 9 11 12 13 16
19
1 5 6 9 10
31
1 3 4 7 8
15
1 2 6 7
28
4 6 7 8 10
11
1
19
2 3 5 7 10
23
1 5 6 9 10 12
34
1 7 10 11 12 13 14 16
31
3 5 7 8 9 12 13 14
29
1 3 8 9 10 11
17
3 4...

result:

ok ok 556 cases (556 test cases)

Test #10:

score: 0
Accepted
time: 119ms
memory: 24844kb

input:

1
100000 50000 25000
2 1
2 1000000000
3 1
3 1000000000
4 1
4 1000000000
5 1
5 1000000000
6 1
6 1000000000
7 1
7 1000000000
8 1
8 1000000000
9 1
9 1000000000
10 1
10 1000000000
11 1
11 1000000000
12 1
12 1000000000
13 1
13 1000000000
14 1
14 1000000000
15 1
15 1000000000
16 1
16 1000000000
17 1
17 10...

output:

99996
2 3 6 9 12 13 16 17 21 23 24 26 27 29 31 32 35 37 40 42 44 49 50 52 53 58 59 62 66 67 69 70 71 72 73 74 75 76 77 79 80 81 83 84 86 87 92 93 95 96 98 99 100 101 105 106 107 108 110 112 116 120 123 125 126 127 128 131 133 134 136 139 140 142 144 150 154 161 163 166 167 168 169 171 172 175 181 18...

result:

ok ok 1 cases (1 test case)

Test #11:

score: 0
Accepted
time: 43ms
memory: 13924kb

input:

556
32 15 7
2 1
2 1000000000
3 1
3 1000000000
4 1
4 1000000000
5 1
5 1000000000
6 1
6 1000000000
7 1
7 1000000000
8 1
8 1000000000
9 1
9 1000000000
1 2
1000000000 2
1 3
1000000000 3
1 4
1000000000 4
1 5
1000000000 5
1 6
1000000000 6
1 7
1000000000 7
1 8
1000000000 8
1 9
1000000000 9
7 6
4 3
5 4
2 2
...

output:

28
1 2 3 7 8 10 15
11
1 4
20
3 4
23
4 7 8 9 10
26
1 2 6 7 8
17
1
10
2
31
2 3 6 8
14
1
31
2 3 4 5 7 11 14
34
2 3 4 5 7 8 15
16
3
32
1 2 6 7 8
29
3 5
28
1 6 7 8 10 12 15
31
1 2 4 5 6 8 14
25
3 5 8 9
15
2 4 5
29
1 5 6 9 11
31
1 4 7 8
15
1 2 7
29
1 3
27
1 3 6
19
5 6 7 9
25
1 6 7 9
2
1
16
2
32
2 3 9 11 1...

result:

ok ok 556 cases (556 test cases)

Test #12:

score: 0
Accepted
time: 74ms
memory: 28660kb

input:

1
100000 49999 24999
2 1
2 1000000000
3 1
3 1000000000
4 1
4 1000000000
5 1
5 1000000000
6 1
6 1000000000
7 1
7 1000000000
8 1
8 1000000000
9 1
9 1000000000
10 1
10 1000000000
11 1
11 1000000000
12 1
12 1000000000
13 1
13 1000000000
14 1
14 1000000000
15 1
15 1000000000
16 1
16 1000000000
17 1
17 10...

output:

99996
1 3 4 6 8 10 12 17 20 22 25 26 27 29 30 32 33 34 35 37 39 42 44 47 48 49 51 54 58 59 60 61 68 69 70 72 74 75 77 78 81 82 84 85 88 89 90 91 93 94 96 97 98 100 103 110 111 112 114 115 116 120 123 124 127 129 130 133 135 136 139 140 143 145 146 149 150 152 153 160 163 169 171 174 175 176 178 179 ...

result:

ok ok 1 cases (1 test case)

Test #13:

score: 0
Accepted
time: 53ms
memory: 12168kb

input:

556
22 1 1
2 1
2 1000000000
1 2
1000000000 2
1 3
1000000000 3
1 4
1000000000 4
1 5
1000000000 5
1 6
1000000000 6
1 7
1000000000 7
1 8
1000000000 8
1 9
1000000000 9
1 10
1000000000 10
1 11
1000000000 11
2 2
18 3 1
2 1
2 1000000000
3 1
3 1000000000
1 2
1000000000 2
1 3
1000000000 3
1 4
1000000000 4
1 ...

output:

29
1
19
1
20
1 5
14
2 5
25
2
28
1 2 3 4 6 8 9
23
1
29
3 5 8 10 11
28
2 3 5 6
5
1
23
6 7 8 9 11
31
2 3 5 10 13 14 15
29
2 3
7
1
26
1
27
2 3 6 9 12 13
24
1 5 7
14
3 5
32
3 4 5 6 10 11 13 14
24
1 2 5
27
1 2 3 6 7 10
32
1 2 3 4 5 9 14 15
30
1 3 5
24
2 3 7
15
2 3 6
26
1
18
1 2 6
22
2
34
5 6 7 8 11 14 15
...

result:

ok ok 556 cases (556 test cases)

Test #14:

score: 0
Accepted
time: 134ms
memory: 25644kb

input:

1
100000 49999 24999
2 1
2 1000000000
3 1
3 1000000000
4 1
4 1000000000
5 1
5 1000000000
6 1
6 1000000000
7 1
7 1000000000
8 1
8 1000000000
9 1
9 1000000000
10 1
10 1000000000
11 1
11 1000000000
12 1
12 1000000000
13 1
13 1000000000
14 1
14 1000000000
15 1
15 1000000000
16 1
16 1000000000
17 1
17 10...

output:

99996
1 2 8 11 13 14 15 16 17 19 20 21 26 29 31 36 39 42 45 46 49 51 53 54 55 57 61 62 64 67 68 69 71 73 74 76 78 79 80 81 82 84 85 88 89 91 94 100 101 103 104 109 110 112 113 115 116 120 123 127 130 131 132 133 136 141 147 149 150 151 153 154 155 158 159 161 163 167 168 170 171 173 174 175 177 178 ...

result:

ok ok 1 cases (1 test case)

Test #15:

score: 0
Accepted
time: 83ms
memory: 20564kb

input:

1
100000 49998 34141
2 1
2 1000000000
3 1
3 1000000000
4 1
4 1000000000
5 1
5 1000000000
6 1
6 1000000000
7 1
7 1000000000
8 1
8 1000000000
9 1
9 1000000000
10 1
10 1000000000
11 1
11 1000000000
12 1
12 1000000000
13 1
13 1000000000
14 1
14 1000000000
15 1
15 1000000000
16 1
16 1000000000
17 1
17 10...

output:

118282
1 4 5 6 7 8 11 12 14 15 16 19 23 25 26 27 28 30 31 32 33 34 35 37 38 39 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 63 65 66 67 68 69 71 72 73 74 75 76 77 79 80 82 83 84 85 86 87 88 91 92 93 94 95 96 98 99 100 101 102 103 104 109 111 112 113 114 115 117 119 120 121 122 124 126 127 1...

result:

ok ok 1 cases (1 test case)

Test #16:

score: 0
Accepted
time: 101ms
memory: 24948kb

input:

1
100000 82275 67072
2 1
2 1000000000
3 1
3 1000000000
4 1
4 1000000000
5 1
5 1000000000
6 1
6 1000000000
7 1
7 1000000000
8 1
8 1000000000
9 1
9 1000000000
10 1
10 1000000000
11 1
11 1000000000
12 1
12 1000000000
13 1
13 1000000000
14 1
14 1000000000
15 1
15 1000000000
16 1
16 1000000000
17 1
17 10...

output:

119590
7 8 9 10 14 15 20 21 22 26 28 29 31 32 33 34 37 41 45 46 47 51 53 54 56 58 59 60 61 63 64 65 66 68 69 70 71 75 76 83 85 89 92 94 97 98 99 101 104 105 110 111 113 118 119 122 125 127 128 129 130 132 133 134 136 138 139 140 143 149 152 153 154 155 160 162 163 164 165 166 168 171 175 176 177 179...

result:

ok ok 1 cases (1 test case)

Test #17:

score: 0
Accepted
time: 67ms
memory: 13648kb

input:

556
30 12 6
2 1
2 1000000000
3 1
3 1000000000
4 1
4 1000000000
5 1
5 1000000000
6 1
6 1000000000
7 1
7 1000000000
8 1
8 1000000000
1 2
1000000000 2
1 3
1000000000 3
1 4
1000000000 4
1 5
1000000000 5
1 6
1000000000 6
1 7
1000000000 7
1 8
1000000000 8
1 9
1000000000 9
2 6
2 8
3 4
4 4
4 8
5 3
5 7
5 8
6...

output:

29
2 4 7 8 10 11
19
2 3 5 6 7 8 9 10 11
25
2 3 4 5 6 8 9 10 11 12
13
3 4 5
31
2 3 5 6 8 9 11 12 13 14 16 17 18 19 20 21 22 23 24 25 26 27 28
36
1 4 5 8 9 10 13
18
2 3 4 5
20
3 4 6 7 8
20
2 3 4 5 6 8 9 10 11 12 13 14 16 17 18
12
2 3 4 5
8
2 3 4 6 7 8
15
2 3 4 5 6
22
2 3 5 6 7 8 9 11 12 13 15 16 17
25...

result:

ok ok 556 cases (556 test cases)

Test #18:

score: 0
Accepted
time: 122ms
memory: 32484kb

input:

1
100000 99991 75553
2 1
2 1000000000
3 1
3 1000000000
4 1
4 1000000000
5 1
5 1000000000
6 1
6 1000000000
7 1
7 1000000000
8 1
8 1000000000
9 1
9 1000000000
10 1
10 1000000000
11 1
11 1000000000
12 1
12 1000000000
13 1
13 1000000000
14 1
14 1000000000
15 1
15 1000000000
16 1
16 1000000000
17 1
17 10...

output:

101120
2 3 5 7 8 9 10 11 13 15 16 17 18 19 20 21 23 24 25 27 28 30 32 33 34 35 37 39 41 42 43 44 47 48 50 52 54 55 57 58 59 60 61 62 64 65 66 67 68 71 72 73 75 76 77 78 79 80 81 82 85 86 87 88 89 90 91 92 93 95 97 98 99 100 101 102 103 105 107 108 109 110 111 112 113 115 116 117 119 120 121 122 124 ...

result:

ok ok 1 cases (1 test case)

Extra Test:

score: 0
Extra Test Passed