QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#104866#5433. Absolute DifferencemaspyAC ✓382ms63380kbC++2024.8kb2023-05-12 09:01:192023-05-12 09:01:21

Judging History

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

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-05-12 09:01:21]
  • 评测
  • 测评结果:AC
  • 用时:382ms
  • 内存:63380kb
  • [2023-05-12 09:01:19]
  • 提交

answer

#line 1 "library/my_template.hpp"
#if defined(LOCAL)
#include <my_template_compiled.hpp>
#else
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")

#include <bits/stdc++.h>

using namespace std;

using ll = long long;
using pi = pair<ll, ll>;
using vi = vector<ll>;
using u32 = unsigned int;
using u64 = unsigned long long;
using i128 = __int128;

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); }
// (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, typename U>
T ceil(T x, U y) {
  return (x > 0 ? (x + y - 1) / y : x / y);
}
template <typename T, typename U>
T floor(T x, U y) {
  return (x > 0 ? x / y : (x - y + 1) / y);
}
template <typename T, typename U>
pair<T, T> divmod(T x, U y) {
  T q = floor(x, y);
  return {q, x - q * y};
}

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

#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) {
  assert(!que.empty());
  T a = que.top();
  que.pop();
  return a;
}
template <typename T>
T POP(vc<T> &que) {
  assert(!que.empty());
  T a = que.back();
  que.pop_back();
  return a;
}

template <typename F>
ll binary_search(F check, ll ok, ll ng) {
  assert(check(ok));
  while (abs(ok - ng) > 1) {
    auto x = (ng + ok) / 2;
    tie(ok, ng) = (check(x) ? mp(x, ng) : mp(ok, 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;
    tie(ok, ng) = (check(x) ? mp(x, ng) : mp(ok, 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;
}
#endif
#line 1 "library/other/io.hpp"
// based on yosupo's fastio
#include <unistd.h>

namespace fastio {
#define FASTIO
// クラスが read(), print() を持っているかを判定するメタ関数
struct has_write_impl {
  template <class T>
  static auto check(T &&x) -> decltype(x.write(), std::true_type{});

  template <class T>
  static auto check(...) -> std::false_type;
};

template <class T>
class has_write : public decltype(has_write_impl::check<T>(std::declval<T>())) {
};

struct has_read_impl {
  template <class T>
  static auto check(T &&x) -> decltype(x.read(), std::true_type{});

  template <class T>
  static auto check(...) -> std::false_type;
};

template <class T>
class has_read : public decltype(has_read_impl::check<T>(std::declval<T>())) {};

struct Scanner {
  FILE *fp;
  char line[(1 << 15) + 1];
  size_t st = 0, ed = 0;
  void reread() {
    memmove(line, line + st, ed - st);
    ed -= st;
    st = 0;
    ed += fread(line + ed, 1, (1 << 15) - ed, fp);
    line[ed] = '\0';
  }
  bool succ() {
    while (true) {
      if (st == ed) {
        reread();
        if (st == ed) return false;
      }
      while (st != ed && isspace(line[st])) st++;
      if (st != ed) break;
    }
    if (ed - st <= 50) {
      bool sep = false;
      for (size_t i = st; i < ed; i++) {
        if (isspace(line[i])) {
          sep = true;
          break;
        }
      }
      if (!sep) reread();
    }
    return true;
  }
  template <class T, enable_if_t<is_same<T, string>::value, int> = 0>
  bool read_single(T &ref) {
    if (!succ()) return false;
    while (true) {
      size_t sz = 0;
      while (st + sz < ed && !isspace(line[st + sz])) sz++;
      ref.append(line + st, sz);
      st += sz;
      if (!sz || st != ed) break;
      reread();
    }
    return true;
  }
  template <class T, enable_if_t<is_integral<T>::value, int> = 0>
  bool read_single(T &ref) {
    if (!succ()) return false;
    bool neg = false;
    if (line[st] == '-') {
      neg = true;
      st++;
    }
    ref = T(0);
    while (isdigit(line[st])) { ref = 10 * ref + (line[st++] & 0xf); }
    if (neg) ref = -ref;
    return true;
  }
  template <typename T,
            typename enable_if<has_read<T>::value>::type * = nullptr>
  inline bool read_single(T &x) {
    x.read();
    return true;
  }
  bool read_single(double &ref) {
    string s;
    if (!read_single(s)) return false;
    ref = std::stod(s);
    return true;
  }
  bool read_single(char &ref) {
    string s;
    if (!read_single(s) || s.size() != 1) return false;
    ref = s[0];
    return true;
  }
  template <class T>
  bool read_single(vector<T> &ref) {
    for (auto &d: ref) {
      if (!read_single(d)) return false;
    }
    return true;
  }
  template <class T, class U>
  bool read_single(pair<T, U> &p) {
    return (read_single(p.first) && read_single(p.second));
  }
  template <size_t N = 0, typename T>
  void read_single_tuple(T &t) {
    if constexpr (N < std::tuple_size<T>::value) {
      auto &x = std::get<N>(t);
      read_single(x);
      read_single_tuple<N + 1>(t);
    }
  }
  template <class... T>
  bool read_single(tuple<T...> &tpl) {
    read_single_tuple(tpl);
    return true;
  }
  void read() {}
  template <class H, class... T>
  void read(H &h, T &... t) {
    bool f = read_single(h);
    assert(f);
    read(t...);
  }
  Scanner(FILE *fp) : fp(fp) {}
};

struct Printer {
  Printer(FILE *_fp) : fp(_fp) {}
  ~Printer() { flush(); }

  static constexpr size_t SIZE = 1 << 15;
  FILE *fp;
  char line[SIZE], small[50];
  size_t pos = 0;
  void flush() {
    fwrite(line, 1, pos, fp);
    pos = 0;
  }
  void write(const char val) {
    if (pos == SIZE) flush();
    line[pos++] = val;
  }
  template <class T, enable_if_t<is_integral<T>::value, int> = 0>
  void write(T val) {
    if (pos > (1 << 15) - 50) flush();
    if (val == 0) {
      write('0');
      return;
    }
    if (val < 0) {
      write('-');
      val = -val; // todo min
    }
    size_t len = 0;
    while (val) {
      small[len++] = char(0x30 | (val % 10));
      val /= 10;
    }
    for (size_t i = 0; i < len; i++) { line[pos + i] = small[len - 1 - i]; }
    pos += len;
  }
  void write(const string s) {
    for (char c: s) write(c);
  }
  void write(const char *s) {
    size_t len = strlen(s);
    for (size_t i = 0; i < len; i++) write(s[i]);
  }
  void write(const double x) {
    ostringstream oss;
    oss << fixed << setprecision(15) << x;
    string s = oss.str();
    write(s);
  }
  void write(const long double x) {
    ostringstream oss;
    oss << fixed << setprecision(15) << x;
    string s = oss.str();
    write(s);
  }
  template <typename T,
            typename enable_if<has_write<T>::value>::type * = nullptr>
  inline void write(T x) {
    x.write();
  }
  template <class T>
  void write(const vector<T> val) {
    auto n = val.size();
    for (size_t i = 0; i < n; i++) {
      if (i) write(' ');
      write(val[i]);
    }
  }
  template <class T, class U>
  void write(const pair<T, U> val) {
    write(val.first);
    write(' ');
    write(val.second);
  }
  template <size_t N = 0, typename T>
  void write_tuple(const T t) {
    if constexpr (N < std::tuple_size<T>::value) {
      if constexpr (N > 0) { write(' '); }
      const auto x = std::get<N>(t);
      write(x);
      write_tuple<N + 1>(t);
    }
  }
  template <class... T>
  bool write(tuple<T...> tpl) {
    write_tuple(tpl);
    return true;
  }
  template <class T, size_t S>
  void write(const array<T, S> val) {
    auto n = val.size();
    for (size_t i = 0; i < n; i++) {
      if (i) write(' ');
      write(val[i]);
    }
  }
  void write(i128 val) {
    string s;
    bool negative = 0;
    if (val < 0) {
      negative = 1;
      val = -val;
    }
    while (val) {
      s += '0' + int(val % 10);
      val /= 10;
    }
    if (negative) s += "-";
    reverse(all(s));
    if (len(s) == 0) s = "0";
    write(s);
  }
};
Scanner scanner = Scanner(stdin);
Printer printer = Printer(stdout);
void flush() { printer.flush(); }
void print() { printer.write('\n'); }
template <class Head, class... Tail>
void print(Head &&head, Tail &&... tail) {
  printer.write(head);
  if (sizeof...(Tail)) printer.write(' ');
  print(forward<Tail>(tail)...);
}

void read() {}
template <class Head, class... Tail>
void read(Head &head, Tail &... tail) {
  scanner.read(head);
  read(tail...);
}
} // namespace fastio
using fastio::print;
using fastio::flush;
using fastio::read;

#define INT(...)   \
  int __VA_ARGS__; \
  read(__VA_ARGS__)
#define LL(...)   \
  ll __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 1 "library/ds/intervals.hpp"
// https://codeforces.com/contest/1638/problem/E
// https://codeforces.com/contest/897/problem/E
// 持つ値のタイプ T、座標タイプ X
// コンストラクタでは T none_val を指定する
template <typename T = ll, typename X = ll>
struct Intervals {
  static constexpr X LLIM = numeric_limits<X>::lowest();
  static constexpr X RLIM = numeric_limits<X>::max();
  const T none_val;
  // none_val でない区間の個数と長さ合計
  int total_num;
  X total_len;
  map<X, T> dat;

  Intervals(T none_val) : none_val(none_val), total_num(0), total_len(0) {
    dat[LLIM] = none_val;
    dat[RLIM] = none_val;
  }

  tuple<X, X, T> get(X x) {
    auto it = dat.upper_bound(x);
    X r = (*it).fi;
    auto [l, t] = *prev(it);
    return {l, r, t};
  }

  template <typename ADD, typename RM>
  void set(X L, X R, T t, ADD& add_f, RM& rm_f) {
    if (L == R) return;
    assert(L < R);
    // 区間 [l, r) を t に変更する
    // まずは、重なるか隣り合う区間を全列挙
    vc<tuple<X, X, T>> tmp;
    auto it = prev(dat.lower_bound(L));
    while (1) {
      auto [l, t] = *it;
      if (R < l) break;
      it = next(it);
      X r = (*it).fi;
      tmp.eb(l, r, t);
    }
    auto [lx, _, lt] = tmp[0];
    auto [__, rx, rt] = tmp.back();
    // とりあえず全部削除
    for (auto&& [l, r, t]: tmp) {
      dat.erase(l);
      if (t == none_val) continue;
      total_num--;
      total_len -= r - l;
      rm_f(l, r, t);
    }
    if (lt == t) chmin(L, lx);
    if (rt == t) chmax(R, rx);
    if (lx < L) {
      // [lx, L)
      dat[lx] = lt;
      if (lt != none_val) {
        total_num++;
        total_len += L - lx;
        add_f(lx, L, lt);
      }
    }
    if (R < rx) {
      // [R, rx)
      dat[R] = rt;
      if (rt != none_val) {
        total_num++;
        total_len += rx - R;
        add_f(R, rx, rt);
      }
    }
    // [L, R)
    dat[L] = t;
    if (t != none_val) {
      total_num++;
      total_len += R - L;
      add_f(L, R, t);
    }
  }

  void set(X L, X R, T t = 1) {
    auto f = [&](X L, X R, T t) -> void {};
    set(L, R, t, f, f);
  }

  void erase(X L, X R) {
    auto f = [&](X L, X R, T t) -> void {};
    set(L, R, none_val, f, f);
  }

  // L, R 内のデータ (l, r, t) を全部取得する
  vc<tuple<X, X, T>> get(X L, X R) {
    vc<tuple<X, X, T>> res;
    auto it = dat.lower_bound(L);
    if(it != dat.begin()) it = prev(it);
    while (1) {
      auto [l, t] = *it;
      if (R <= l) break;
      it = next(it);
      X r = (*it).fi;
      X l0 = max(l, L);
      X r0 = min(r, R);
      if (l0 < r0) res.eb(l0, r0, t);
    }
    return res;
  }

  vc<tuple<X, X, T>> get_all() {
    return get(LLIM, RLIM);
  }

  void debug() {
    auto it = dat.begin();
    print("Intervals");
    print("total_num", total_num);
    print("total_len", total_len);
    while (1) {
      auto [l, t] = *it;
      ++it;
      if (it == dat.end()) break;
      X r = (*it).fi;
      print("l, r, t", l, r, t);
    }
  }
};


#line 1 "library/ds/fastset.hpp"
/* 64分木。
insert, erase
[]での存在判定
next, prev
*/
struct FastSet {
  using uint = unsigned;
  using ull = unsigned long long;

  int bsr(ull x) { return 63 - __builtin_clzll(x); }
  int bsf(ull x) { return __builtin_ctzll(x); }

  static constexpr uint B = 64;
  int n, lg;
  vector<vector<ull>> seg;
  FastSet(int _n) : n(_n) {
    do {
      seg.push_back(vector<ull>((_n + B - 1) / B));
      _n = (_n + B - 1) / B;
    } while (_n > 1);
    lg = int(seg.size());
  }
  bool operator[](int i) const { return (seg[0][i / B] >> (i % B) & 1) != 0; }
  void insert(int i) {
    for (int h = 0; h < lg; h++) {
      seg[h][i / B] |= 1ULL << (i % B);
      i /= B;
    }
  }
  void erase(int i) {
    for (int h = 0; h < lg; h++) {
      seg[h][i / B] &= ~(1ULL << (i % B));
      if (seg[h][i / B]) break;
      i /= B;
    }
  }

  // x以上最小の要素を返す。存在しなければ n。
  int next(int i) {
    chmax(i, 0);
    if (i >= n) return n;
    for (int h = 0; h < lg; h++) {
      if (i / B == seg[h].size()) break;
      ull d = seg[h][i / B] >> (i % B);
      if (!d) {
        i = i / B + 1;
        continue;
      }
      // find
      i += bsf(d);
      for (int g = h - 1; g >= 0; g--) {
        i *= B;
        i += bsf(seg[g][i / B]);
      }
      return i;
    }
    return n;
  }

  // x以下最大の要素を返す。存在しなければ -1。
  int prev(int i) {
    if (i < 0) return -1;
    if (i >= n) i = n - 1;
    for (int h = 0; h < lg; h++) {
      if (i == -1) break;
      ull d = seg[h][i / B] << (63 - i % 64);
      if (!d) {
        i = i / B - 1;
        continue;
      }
      // find
      i += bsr(d) - (B - 1);
      for (int g = h - 1; g >= 0; g--) {
        i *= B;
        i += bsr(seg[g][i / B]);
      }
      return i;
    }
    return -1;
  }

  // [l, r) 内の要素を全部集める
  vector<int> collect(int l, int r) {
    vector<int> res;
    int x = l - 1;
    while (1) {
      x = next(x + 1);
      if (x >= r) break;
      res.emplace_back(x);
    }
    return res;
  }

  void debug() {
    string s;
    for (int i = 0; i < n; ++i) s += ((*this)[i] ? '1' : '0');
    print(s);
  }
};
#line 129 "library/ds/intervals.hpp"

// FastSet で高速化したもの
template <typename T>
struct Intervals_Fast {
  const int LLIM, RLIM;
  const T none_val;
  // none_val でない区間の個数と長さ合計
  int total_num;
  int total_len;
  vc<T> dat;
  FastSet ss;

  Intervals_Fast(int N, T none_val)
      : LLIM(0),
        RLIM(N),
        none_val(none_val),
        total_num(0),
        total_len(0),
        dat(N, none_val),
        ss(N + 1) {
    ss.insert(0);
    ss.insert(N);
  }

  tuple<int, int, T> get(int x) {
    auto l = ss.prev(x);
    auto r = ss.next(x + 1);
    return {l, r, dat[l]};
  }

  template <typename ADD, typename RM>
  void set(int L, int R, T t, ADD& add_f, RM& rm_f) {
    assert(LLIM <= L && L <= R && R <= RLIM);
    if (L == R) return;
    assert(L < R);
    // 区間 [l, r) を t に変更する
    // まずは、重なるか隣り合う区間を全列挙
    vc<tuple<int, int, T>> tmp;
    auto l = ss.prev(L);
    while (l < R) {
      auto r = ss.next(l + 1);
      auto t = dat[l];
      tmp.eb(l, r, t);
      l = r;
    }
    auto [lx, _, lt] = tmp[0];
    auto [__, rx, rt] = tmp.back();
    // とりあえず全部削除
    for (auto&& [l, r, t]: tmp) {
      ss.erase(l);
      if (t == none_val) continue;
      total_num--;
      total_len -= r - l;
      rm_f(l, r, t);
    }
    if (lt == t) chmin(L, lx);
    if (rt == t) chmax(R, rx);
    if (lx < L) {
      // [lx, L)
      ss.insert(lx);
      dat[lx] = lt;
      if (lt != none_val) {
        total_num++;
        total_len += L - lx;
        add_f(lx, L, lt);
      }
    }
    if (R < rx) {
      // [R, rx)
      ss.insert(R);
      dat[R] = rt;
      if (rt != none_val) {
        total_num++;
        total_len += rx - R;
        add_f(R, rx, rt);
      }
    }
    // [L, R)
    ss.insert(L);
    dat[L] = t;
    if (t != none_val) {
      total_num++;
      total_len += R - L;
      add_f(L, R, t);
    }
  }

  void set(int L, int R, T t) {
    auto f = [&](int L, int R, T t) -> void {};
    set(L, R, t, f, f);
  }

  void erase(int L, int R) {
    auto f = [&](int L, int R, T t) -> void {};
    set(L, R, none_val, f, f);
  }

  // L, R 内のデータ (l, r, t) を全部取得する
  vc<tuple<int, int, T>> get(int L, int R) {
    assert(LLIM <= L && L <= R && R <= RLIM);
    vc<tuple<int, int, T>> res;
    auto l = ss.prev(L);
    while (l < R) {
      auto t = dat[l];
      auto r = ss.next(l + 1);
      int l0 = max(l, L);
      int r0 = min(r, R);
      if (l0 < r0) res.eb(l0, r0, t);
      l = r;
    }
    return res;
  }

  vc<tuple<int, int, T>> get_all() { return get(LLIM, RLIM); }

  void debug() {
    print("Intervals");
    print("total_num", total_num);
    print("total_len", total_len);
    int l = 0;
    while (l < RLIM) {
      auto t = dat[l];
      auto r = ss.next(l + 1);
      print("l, r, t", l, r, t);
      l = r;
    }
  }
};
#line 4 "main.cpp"

using Re = long double;

vc<pi> shrink(vc<pi> LR) {
  Intervals<int, int> I(-1);
  for (auto&& [a, b]: LR) { I.set(a, b, 1); }
  vc<pi> res;
  for (auto&& [a, b, t]: I.get_all()) {
    if (t != -1) res.eb(a, b);
  }
  return res;
}

void solve_dd(vi X, vi Y) {
  // 離散・離散
  UNIQUE(X);
  UNIQUE(Y);
  Re ANS = 0;
  FOR(2) {
    ll sm = 0;
    ll cnt = 0;
    swap(X, Y);
    int p = 0;
    for (auto&& y: Y) {
      while (p < len(X) && X[p] < y) {
        sm += X[p++];
        ++cnt;
      }
      ANS += cnt * y - sm;
    }
  }
  print(ANS / (len(X) * len(Y)));
};

void solve_cd(vc<pi> AB, vi C) {
  AB = shrink(AB);
  UNIQUE(C);

  // 連続・離散
  Re ANS = 0;

  FOR(2) {
    // 区間の方が右側
    for (auto&& [a, b]: AB) tie(a, b) = mp(-b, -a);
    for (auto&& x: C) x = -x;
    sort(all(C));
    vi X;
    for (auto&& [a, b]: AB) X.eb(a), X.eb(b);
    for (auto&& x: C) X.eb(x);
    UNIQUE(X);
    vi dp(len(X));
    for (auto&& [a, b]: AB) {
      dp[LB(X, a)]++;
      dp[LB(X, b)]--;
    }
    dp = cumsum<ll>(dp, 0);
    ll cnt = 0, sm = 0;
    int p = 0;
    FOR(i, len(X) - 1) {
      while (p < len(C) && C[p] <= X[i]) {
        ++cnt;
        sm += C[p++];
      }
      Re lx = X[i], rx = X[i + 1];
      Re mx = (lx + rx) / 2;
      if (dp[i]) ANS += (mx * cnt - sm) * (rx - lx);
    }
  }
  ll w = 0;
  for (auto&& [a, b]: AB) w += b - a;
  ANS /= w * len(C);
  print(ANS);
}

void solve_cc(vc<pi> AB, vc<pi> CD) {
  // 連続・連続
  AB = shrink(AB);
  CD = shrink(CD);
  ll LEN1 = 0, LEN2 = 0;
  for (auto&& [x, y]: AB) LEN1 += y - x;
  for (auto&& [x, y]: CD) LEN2 += y - x;
  vi X;
  for (auto&& [a, b]: AB) { X.eb(a), X.eb(b); }
  for (auto&& [a, b]: CD) { X.eb(a), X.eb(b); }
  UNIQUE(X);
  for (auto&& [a, b]: AB) { a = LB(X, a), b = LB(X, b); }
  for (auto&& [a, b]: CD) { a = LB(X, a), b = LB(X, b); }
  ll N = len(X);
  vi A(N), B(N);
  for (auto&& [a, b]: AB) { FOR(i, a, b) A[i]++; }
  for (auto&& [a, b]: CD) { FOR(i, a, b) B[i]++; }
  vc<Re> dpc1(N), dps1(N), dpc2(N), dps2(N);
  FOR(i, N - 1) {
    Re a = X[i], b = X[i + 1];
    if (A[i]) {
      dpc1[i] += b - a;
      dps1[i] += (a + b) * 0.5 * (b - a);
    }
    if (B[i]) {
      dpc2[i] += b - a;
      dps2[i] += (a + b) * 0.5 * (b - a);
    }
  }

  Re ANS = 0;

  FOR(i, N - 1) {
    Re a = X[i], b = X[i + 1];
    if (A[i] && B[i]) ANS += (b - a) * (b - a) * (b - a) / 3;
  }

  {
    /*
    FOR(i, N - 1) FOR(j, i) {
      Re a = X[i], b = X[i + 1];
      if (A[i]) ANS += (b - a) * (dpc2[j] * (a + b) / 2 - dps2[j]);
    }
    */
    dpc2 = cumsum<Re>(dpc2);
    dps2 = cumsum<Re>(dps2);
    FOR(i, N - 1) if (A[i]) {
      Re a = X[i], b = X[i + 1];
      ANS += (b - a) * (dpc2[i] * (a + b) / 2 - dps2[i]);
    }
  }
  {
    dpc1 = cumsum<Re>(dpc1);
    dps1 = cumsum<Re>(dps1);
    FOR(i, N - 1) if (B[i]) {
      Re a = X[i], b = X[i + 1];
      ANS += (b - a) * (dpc1[i] * (a + b) / 2 - dps1[i]);
    }
  }

  print(ANS / LEN1 / LEN2);
};

void solve() {
  LL(N, M);
  VEC(pi, AB, N);
  VEC(pi, CD, M);
  ll X = 0, Y = 0;
  for (auto&& [a, b]: AB) X += b - a;
  for (auto&& [c, d]: CD) Y += d - c;
  if (X == 0) {
    swap(X, Y);
    swap(AB, CD);
  }
  if (X == 0) {
    assert(Y == 0);
    vi A, B;
    for (auto&& [a, b]: AB) A.eb(a);
    for (auto&& [a, b]: CD) B.eb(a);
    return solve_dd(A, B);
  }
  if (Y == 0) {
    vi A;
    for (auto&& [a, b]: CD) A.eb(a);
    return solve_cd(AB, A);
  }
  solve_cc(AB, CD);
}

signed main() {
  solve();
  return 0;
}

詳細信息

Test #1:

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

input:

1 1
0 1
0 1

output:

0.333333333333333

result:

ok found '0.333333333', expected '0.333333333', error '0.000000000'

Test #2:

score: 0
Accepted
time: 4ms
memory: 3672kb

input:

1 1
0 1
1 1

output:

0.500000000000000

result:

ok found '0.500000000', expected '0.500000000', error '0.000000000'

Test #3:

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

input:

1 1
-1000000000 1000000000
-1000000000 1000000000

output:

666666666.666666666686069

result:

ok found '666666666.666666627', expected '666666666.666666627', error '0.000000000'

Test #4:

score: 0
Accepted
time: 0ms
memory: 3824kb

input:

1 1
-1000000000 0
0 1000000000

output:

1000000000.000000000000000

result:

ok found '1000000000.000000000', expected '1000000000.000000000', error '0.000000000'

Test #5:

score: 0
Accepted
time: 2ms
memory: 3724kb

input:

1 1
-1000000000 -1000000000
-1000000000 1000000000

output:

1000000000.000000000000000

result:

ok found '1000000000.000000000', expected '1000000000.000000000', error '0.000000000'

Test #6:

score: 0
Accepted
time: 2ms
memory: 3652kb

input:

1 1
-999999999 1000000000
-1000000000 -1000000000

output:

1000000000.500000000000000

result:

ok found '1000000000.500000000', expected '1000000000.500000000', error '0.000000000'

Test #7:

score: 0
Accepted
time: 2ms
memory: 3872kb

input:

1 1
-1000000000 1000000000
-999999999 -999999999

output:

999999999.000000000523869

result:

ok found '999999999.000000000', expected '999999999.000000000', error '0.000000000'

Test #8:

score: 0
Accepted
time: 2ms
memory: 3652kb

input:

1 1
1000000000 1000000000
-1000000000 -1000000000

output:

2000000000.000000000000000

result:

ok found '2000000000.000000000', expected '2000000000.000000000', error '0.000000000'

Test #9:

score: 0
Accepted
time: 1ms
memory: 4032kb

input:

1000 1000
-2175 -2174
-1068 -1065
-1721 -1718
777 834
1162 1169
-3529 -3524
3966 3993
1934 1952
-234 -223
-4967 -4947
8500 8510
5272 5276
-6048 -6033
-34 -22
700 705
-7890 -7886
5538 5543
4114 4126
-9201 -9162
-1521 -1519
-5103 -5100
439 441
993 997
-1684 -1680
-8413 -8404
6724 6728
-3242 -3239
2616...

output:

6717.117145739453735

result:

ok found '6717.117145739', expected '6717.117145739', error '0.000000000'

Test #10:

score: 0
Accepted
time: 3ms
memory: 4132kb

input:

1000 1000
-5010 -4999
-2128 -2113
-5798 -5765
705 713
-3956 -3938
-5308 -5307
6759 6772
-772 -770
-860 -859
2308 2323
-5500 -5500
5140 5177
-6747 -6733
7509 7511
8864 8870
-6382 -6374
1901 1904
-5763 -5760
3019 3027
2962 2963
-314 -301
-222 -203
-726 -724
-62 -58
-1203 -1195
-5216 -5215
-4298 -4292
...

output:

6682.581127471435668

result:

ok found '6682.581127471', expected '6682.581127471', error '0.000000000'

Test #11:

score: 0
Accepted
time: 1ms
memory: 4076kb

input:

1000 1000
770 770
5869 5869
-8786 -8786
7549 7549
-4165 -4165
4023 4023
-9779 -9779
7797 7797
1105 1105
508 508
7653 7653
-359 -359
9393 9393
-9363 -9363
-4160 -4160
-3682 -3682
9409 9409
-8548 -8548
-9908 -9908
-7494 -7494
3751 3751
2326 2326
-3311 -3311
3651 3651
-7663 -7663
5376 5376
-7071 -7071
...

output:

6673.756816891039125

result:

ok found '6673.756816891', expected '6673.756816891', error '0.000000000'

Test #12:

score: 0
Accepted
time: 1ms
memory: 3804kb

input:

1000 1000
-735 -735
-829 -829
-6376 -6376
8558 8558
155 155
5533 5533
8800 8800
-1738 -1738
919 919
52 52
2076 2076
-6911 -6911
139 139
6733 6733
9923 9923
-4619 -4619
-9429 -9429
9902 9902
-5984 -5984
2580 2580
8738 8738
7960 7960
3388 3388
-2689 -2689
7986 7986
2565 2565
-8908 -8908
9359 9359
-434...

output:

6479.384680000000000

result:

ok found '6479.384680000', expected '6479.384680000', error '0.000000000'

Test #13:

score: 0
Accepted
time: 10ms
memory: 6584kb

input:

100 10000
82274 82408
61583 61902
-54304 -54007
-48488 -48316
-92517 -91939
85001 85160
33086 33374
36458 36573
-15785 -11838
93971 94863
50496 53064
-68609 -68302
-91873 -91176
-96937 -96753
9481 9976
83600 83691
17742 18693
55685 56039
56323 57845
88761 90277
22886 23642
30848 31047
-34662 -33470
...

output:

65016.298634797616074

result:

ok found '65016.298634798', expected '65016.298634798', error '0.000000000'

Test #14:

score: 0
Accepted
time: 0ms
memory: 3992kb

input:

100 10000
-89227 -88897
-70959 -68913
-60233 -59597
81753 81820
96806 97104
-58324 -57553
-38857 -37087
-81344 -81311
22701 22890
-68517 -66298
-19753 -19047
-80409 -79437
6355 7569
-13999 -12586
-84981 -82448
-29865 -29624
-76088 -75272
70697 72265
85493 86097
82574 84418
-8937 -8079
-92387 -90609
...

output:

65683.869707087889005

result:

ok found '65683.869707088', expected '65683.869707088', error '0.000000000'

Test #15:

score: 0
Accepted
time: 5ms
memory: 4012kb

input:

10000 100
-57904 -57904
21152 21152
60543 60543
50109 50109
-79601 -79601
-22525 -22525
28423 28423
48296 48296
-71861 -71861
-72518 -72518
-83776 -83776
77745 77745
21894 21894
-32330 -32330
82508 82508
63261 63261
-5358 -5358
3672 3672
12238 12238
-84298 -84298
-7608 -7608
3472 3472
17602 17602
56...

output:

67565.835344673239405

result:

ok found '67565.835344673', expected '67565.835344673', error '0.000000000'

Test #16:

score: 0
Accepted
time: 3ms
memory: 3832kb

input:

10000 100
30397 30397
62144 62144
53466 53466
-85377 -85377
-36472 -36472
-11689 -11689
18989 18989
85562 85562
-90083 -90083
51219 51219
19436 19436
-51762 -51762
28774 28774
10705 10705
83520 83520
11659 11659
-44907 -44907
62858 62858
69493 69493
59094 59094
9273 9273
-83311 -83311
94463 94463
50...

output:

68329.270490000000002

result:

ok found '68329.270490000', expected '68329.270490000', error '0.000000000'

Test #17:

score: 0
Accepted
time: 137ms
memory: 35800kb

input:

10 100000
-869747 -830724
-788440 -670325
117115 196471
908542 968596
650801 749354
370395 516964
-501924 -184650
-948338 -936663
-95487 58170
541118 558043
-159087 -159083
32299 32305
-973981 -973976
301160 301166
-865954 -865952
-213982 -213982
28063 28063
206739 206748
546600 546610
-387875 -3878...

output:

634086.603017421552636

result:

ok found '634086.603017422', expected '634086.603017422', error '0.000000000'

Test #18:

score: 0
Accepted
time: 31ms
memory: 8664kb

input:

10 100000
934221 971862
-251602 -152935
105813 259309
-301967 -290235
-763282 -744289
445844 475617
-144934 4340
359403 385458
262854 351832
-710665 -692937
820128 820128
436541 436541
-25819 -25819
252335 252335
958484 958484
652451 652451
678026 678026
-439346 -439346
279913 279913
544864 544864
7...

output:

565818.115295723055908

result:

ok found '565818.115295723', expected '565818.115295723', error '0.000000000'

Test #19:

score: 0
Accepted
time: 23ms
memory: 8684kb

input:

100000 10
-103700 -103700
83578 83578
-898202 -898202
-685097 -685097
-213656 -213656
-145735 -145735
898557 898557
4286 4286
-48010 -48010
70529 70529
734485 734485
239485 239485
-703231 -703231
-378710 -378710
596807 596807
421467 421467
-634867 -634867
813096 813096
-285744 -285744
496159 496159
...

output:

666656.311518359857985

result:

ok found '666656.311518360', expected '666656.311518360', error '0.000000000'

Test #20:

score: 0
Accepted
time: 9ms
memory: 6584kb

input:

100000 10
-522243 -522243
521529 521529
-80533 -80533
-13186 -13186
359930 359930
905205 905205
351967 351967
109916 109916
-331194 -331194
75817 75817
-696842 -696842
459057 459057
818912 818912
-865118 -865118
367903 367903
-947033 -947033
-611435 -611435
821124 821124
365222 365222
930370 930370
...

output:

664350.583891999999992

result:

ok found '664350.583892000', expected '664350.583892000', error '0.000000000'

Test #21:

score: 0
Accepted
time: 159ms
memory: 36032kb

input:

1000 100000
695517 695542
-92873 -92540
-441175 -440798
-262307 -262125
989370 989445
774599 776116
217889 218976
659321 659370
-985037 -984536
-937583 -936702
628123 629430
262516 264589
-567533 -567069
-800526 -799506
-551243 -550516
-446500 -445987
412624 412671
371916 372698
-148417 -148284
2092...

output:

665300.559994430656616

result:

ok found '665300.559994431', expected '665300.559994431', error '0.000000000'

Test #22:

score: 0
Accepted
time: 34ms
memory: 9040kb

input:

1000 100000
-605982 -605323
195847 196363
875269 875399
-182475 -179217
-395130 -394436
-707687 -703082
-814686 -814456
920351 920781
-510710 -510701
229860 233190
941364 941443
-993499 -991461
-587971 -586522
691331 692227
45472 45979
-522484 -522117
78182 78611
-238995 -238044
-49808 -49344
-29114...

output:

668400.718242814764437

result:

ok found '668400.718242815', expected '668400.718242815', error '0.000000000'

Test #23:

score: 0
Accepted
time: 28ms
memory: 9048kb

input:

100000 1000
-84555 -84555
-209614 -209614
578710 578710
293747 293747
-392909 -392909
692522 692522
873711 873711
-583901 -583901
213005 213005
-571924 -571924
-722718 -722718
-891567 -891567
259485 259485
397260 397260
-747747 -747747
-337960 -337960
159321 159321
509738 509738
793913 793913
-52712...

output:

663117.410865557338809

result:

ok found '663117.410865557', expected '663117.410865557', error '0.000000000'

Test #24:

score: 0
Accepted
time: 10ms
memory: 6520kb

input:

100000 1000
304051 304051
78396 78396
-11701 -11701
-801884 -801884
-741998 -741998
-985640 -985640
-97919 -97919
894765 894765
-906691 -906691
-757850 -757850
-704383 -704383
244583 244583
471782 471782
242647 242647
-719813 -719813
964046 964046
474988 474988
366664 366664
633242 633242
-417257 -4...

output:

663832.346312860000012

result:

ok found '663832.346312860', expected '663832.346312860', error '0.000000000'

Test #25:

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

input:

1000 100000
467226835 467360234
604952571 606299210
-423495990 -423165079
618010698 618654029
-299509407 -299372648
-520448933 -518514096
-630670309 -629638113
-297348099 -297274069
358382111 359372190
79026840 79733202
553842555 554500003
-812340207 -812186633
-121972281 -120998067
-273770987 -2735...

output:

667770120.512301256821956

result:

ok found '667770120.512301207', expected '667770120.512301207', error '0.000000000'

Test #26:

score: 0
Accepted
time: 22ms
memory: 9032kb

input:

1000 100000
400464424 401349233
812671839 812758217
-917750835 -917655369
843983440 844077178
61954165 62176453
-242975491 -241583879
-210111097 -208052980
-408749021 -408403973
-108891757 -108047513
-979374362 -978728953
-532799240 -528498877
551774491 552188984
771464515 771799584
334255133 336287...

output:

667872950.062587161723059

result:

ok found '667872950.062587142', expected '667872950.062587142', error '0.000000000'

Test #27:

score: 0
Accepted
time: 30ms
memory: 8964kb

input:

100000 1000
-182968966 -182968966
-414893833 -414893833
955081721 955081721
84668417 84668417
-559322955 -559322955
-240426255 -240426255
-599786141 -599786141
920154777 920154777
446171962 446171962
-864101686 -864101686
-441997453 -441997453
-834412146 -834412146
282111132 282111132
-463264297 -46...

output:

664257022.226481167890597

result:

ok found '664257022.226481199', expected '664257022.226481199', error '0.000000000'

Test #28:

score: 0
Accepted
time: 7ms
memory: 6604kb

input:

100000 1000
-517576107 -517576107
-568885194 -568885194
963212732 963212732
773681160 773681160
-133643186 -133643186
82367325 82367325
272385546 272385546
-382302493 -382302493
-749104660 -749104660
-320853413 -320853413
699139908 699139908
-70027636 -70027636
270070742 270070742
348693115 34869311...

output:

659661622.779487819992937

result:

ok found '659661622.779487848', expected '659661622.779487848', error '0.000000000'

Test #29:

score: 0
Accepted
time: 110ms
memory: 26540kb

input:

100000 100000
-63178 -63176
-89630 -89630
-74134 -74134
-5108 -5108
-97875 -97874
95713 95714
34739 34739
-87027 -87026
-84758 -84758
80148 80149
-71106 -71106
-93666 -93665
-83940 -83940
-97886 -97886
72286 72287
31805 31806
52366 52366
71977 71977
47737 47737
-32678 -32678
-84341 -84341
-31339 -31...

output:

66845.255309603124907

result:

ok found '66845.255309603', expected '66845.255309603', error '0.000000000'

Test #30:

score: 0
Accepted
time: 93ms
memory: 17748kb

input:

100000 100000
-20230 -20230
35054 35054
10250 10250
2300 2301
91109 91109
-48021 -48020
51018 51019
60826 60827
-49792 -49792
-37455 -37452
-17919 -17918
13678 13678
-26493 -26493
-61242 -61242
-68573 -68573
27028 27029
41194 41194
74591 74592
-60393 -60392
72895 72895
-8020 -8020
46347 46348
20366 ...

output:

66651.551234295358483

result:

ok found '66651.551234295', expected '66651.551234295', error '0.000000000'

Test #31:

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

input:

100000 100000
-68490 -68490
66859 66859
21657 21657
26460 26460
6869 6869
36764 36764
-71209 -71209
76646 76646
6482 6482
63562 63562
-4156 -4156
73435 73435
15761 15761
195 195
41795 41795
97119 97119
-96357 -96357
-6234 -6234
-62327 -62327
-43259 -43259
88651 88651
-43453 -43453
86681 86681
-70979...

output:

66633.910891748348071

result:

ok found '66633.910891748', expected '66633.910891748', error '0.000000000'

Test #32:

score: 0
Accepted
time: 20ms
memory: 9748kb

input:

100000 100000
77666 77666
-5371 -5371
-4849 -4849
4784 4784
53934 53934
53899 53899
19340 19340
-53887 -53887
67109 67109
-17231 -17231
-10990 -10990
-95519 -95519
-98661 -98661
3320 3320
-70036 -70036
-24894 -24894
93155 93155
-61524 -61524
-28025 -28025
62511 62511
-65140 -65140
-98693 -98693
-978...

output:

66686.757257253600002

result:

ok found '66686.757257254', expected '66686.757257254', error '0.000000000'

Test #33:

score: 0
Accepted
time: 323ms
memory: 53604kb

input:

100000 100000
-535945 -535930
-695013 -694984
-888720 -888719
929792 929796
-386351 -386331
-282145 -282140
879715 879730
229306 229307
-576417 -576412
-60447 -60445
-31666 -31658
-978487 -978431
-283083 -283080
426911 426919
-589710 -589709
56380 56388
125086 125092
-570811 -570771
-592677 -592669
...

output:

666178.555373729951668

result:

ok found '666178.555373730', expected '666178.555373730', error '0.000000000'

Test #34:

score: 0
Accepted
time: 199ms
memory: 25752kb

input:

100000 100000
910317 910333
439851 439860
-57833 -57821
791229 791245
228030 228060
-621844 -621840
-287386 -287386
424379 424405
724566 724587
-510950 -510936
-77441 -77432
351673 351688
823681 823683
91807 91832
-395912 -395912
-48956 -48863
-696812 -696805
-168892 -168890
528002 528003
-65408 -65...

output:

665572.504726026457035

result:

ok found '665572.504726026', expected '665572.504726026', error '0.000000000'

Test #35:

score: 0
Accepted
time: 177ms
memory: 25708kb

input:

100000 100000
114216 114216
317477 317477
-638835 -638835
-501069 -501069
-746934 -746934
698122 698122
962955 962955
-834703 -834703
932349 932349
-150284 -150284
666344 666344
511079 511079
-775108 -775108
15973 15973
823254 823254
-838469 -838469
-933974 -933974
307675 307675
645916 645916
-36150...

output:

666843.727039755582723

result:

ok found '666843.727039756', expected '666843.727039756', error '0.000000000'

Test #36:

score: 0
Accepted
time: 18ms
memory: 9748kb

input:

100000 100000
-502397 -502397
-539277 -539277
604186 604186
-8233 -8233
711684 711684
-912529 -912529
317918 317918
573287 573287
739145 739145
973516 973516
318339 318339
200868 200868
606006 606006
-439203 -439203
22125 22125
-359742 -359742
-345591 -345591
-177190 -177190
818910 818910
-26180 -26...

output:

665852.723365387400008

result:

ok found '665852.723365387', expected '665852.723365387', error '0.000000000'

Test #37:

score: 0
Accepted
time: 345ms
memory: 57000kb

input:

100000 100000
-808056551 -808056051
360643024 360644823
-548630254 -548617261
20019569 20021385
730140215 730146641
-963400956 -963384461
-341088955 -341071018
697742209 697763513
-913285014 -913281950
115842426 115861551
-556889817 -556888200
-257253799 -257227016
-391620588 -391603059
-377165210 -...

output:

665370978.511628043139353

result:

ok found '665370978.511628032', expected '665370978.511628032', error '0.000000000'

Test #38:

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

input:

100000 100000
19245374 19253533
415912510 415919061
-967360492 -967353659
931284719 931287007
67513351 67528960
-562019251 -562011190
-293356445 -293351374
-38862537 -38857326
-236877156 -236874348
-439121014 -439102932
-962301338 -962299721
-572627529 -572625148
42919554 42928439
-25607193 -2560320...

output:

665763829.221126629621722

result:

ok found '665763829.221126676', expected '665763829.221126676', error '0.000000000'

Test #39:

score: 0
Accepted
time: 206ms
memory: 26184kb

input:

100000 100000
-223420380 -223420380
225452385 225452385
-135660671 -135660671
232052814 232052814
-555262737 -555262737
-502408785 -502408785
-417051620 -417051620
-185499880 -185499880
993865739 993865739
-419905135 -419905135
-556158286 -556158286
-475443440 -475443440
87759441 87759441
-158535656...

output:

667134583.751268213265575

result:

ok found '667134583.751268268', expected '667134583.751268268', error '0.000000000'

Test #40:

score: 0
Accepted
time: 16ms
memory: 9840kb

input:

100000 100000
-831383018 -831383018
733650170 733650170
-600284513 -600284513
512189253 512189253
166332410 166332410
757968467 757968467
-730039835 -730039835
163889762 163889762
50154435 50154435
-947716565 -947716565
-870959790 -870959790
-884766894 -884766894
489394349 489394349
-254639400 -2546...

output:

665403654.562461450404953

result:

ok found '665403654.562461495', expected '665403654.562461495', error '0.000000000'

Test #41:

score: 0
Accepted
time: 310ms
memory: 57044kb

input:

100000 100000
443932032 443935596
-444078486 -444070740
-94377250 -94376522
582553573 582555701
-370634254 -370616202
-529026886 -529006944
-264583467 -264580106
725417855 725421131
681586839 681591168
768383662 768390993
-442025202 -442022560
-624108611 -624106809
-662029422 -662028129
980678671 98...

output:

635375366.303343130159192

result:

ok found '635375366.303343177', expected '635375366.303343177', error '0.000000000'

Test #42:

score: 0
Accepted
time: 308ms
memory: 60248kb

input:

100000 100000
-657396045 -657359367
32090072 32091571
-2870351 -2867412
-172368963 -172349967
247696364 247704914
-587818915 -587791896
141249694 141258412
-23098887 -23084410
-613261537 -613247513
-236221593 -236212768
-264525556 -264524588
438979316 438989127
311894551 311927899
353730917 35373305...

output:

639639593.300860914925579

result:

ok found '639639593.300860882', expected '639639593.300860882', error '0.000000000'

Test #43:

score: 0
Accepted
time: 325ms
memory: 60260kb

input:

100000 100000
-895806056 -895805592
-680627087 -680623069
-383851910 -383846254
-571820449 -571818772
-887614666 -887612527
-547289617 -547279029
-816082867 -816079563
-839354262 -839353748
-842671079 -842670344
-751350562 -751349082
-85210761 -85174708
-811639994 -811639485
-830212248 -830204786
-1...

output:

574252180.923222298384644

result:

ok found '574252180.923222303', expected '574252180.923222303', error '0.000000000'

Test #44:

score: 0
Accepted
time: 315ms
memory: 60256kb

input:

100000 100000
-697591310 -697590691
-371050848 -371042102
13066715 13075451
-803967141 -803966034
-838949034 -838947377
-838420351 -838419525
-988592409 -988591815
-755316591 -755316200
-853026776 -853024025
-695701585 -695698642
-904787475 -904786848
-948020940 -948019276
-24992616 -24972272
-86677...

output:

647778903.576219635491725

result:

ok found '647778903.576219678', expected '647778903.576219678', error '0.000000000'

Test #45:

score: 0
Accepted
time: 382ms
memory: 63380kb

input:

100000 100000
-670845965 -670840522
-603912130 -603908905
-695667235 -695664321
-808356909 -808356168
-697204041 -697202125
-979468629 -979467469
-969074716 -969071226
-897515522 -897515458
-663568637 -663566024
-697609810 -697609451
-481627412 -481625315
-568443250 -568442311
-141286752 -141284410
...

output:

620818278.125371234666090

result:

ok found '620818278.125371218', expected '620818278.125371218', error '0.000000000'

Test #46:

score: 0
Accepted
time: 299ms
memory: 60212kb

input:

100000 100000
989573511 989576481
974678668 974678930
918754907 918755036
983272133 983275918
760197268 760197490
911326574 911327480
698833794 698858733
-315087611 -314132717
949976857 949981139
698037887 698042582
647843273 647846477
396510644 396527098
964910296 964913352
904149663 904149764
8926...

output:

632570106.226343104382977

result:

ok found '632570106.226343155', expected '632570106.226343155', error '0.000000000'

Test #47:

score: 0
Accepted
time: 295ms
memory: 63336kb

input:

100000 100000
759253244 759264787
378570798 378574324
730784503 730785993
952815170 952815415
706988010 707006560
145840200 145847203
-80500431 -80429789
459778257 459788645
931403097 931404841
926484571 926485646
835464369 835465158
136862009 136946404
676455169 676461690
908555990 908557630
783999...

output:

635819757.623793949023820

result:

ok found '635819757.623793960', expected '635819757.623793960', error '0.000000000'

Test #48:

score: 0
Accepted
time: 326ms
memory: 57088kb

input:

100000 100000
166357570 166363102
494735916 494742382
369918246 369934842
921285591 921290163
242715463 242771452
757400974 757410840
639359734 639364797
774076002 774076927
437271424 437286525
979693851 979694479
955074711 955082848
697562236 697563909
914910778 914911056
496759130 496759888
808075...

output:

608157073.926892073184717

result:

ok found '608157073.926892042', expected '608157073.926892042', error '0.000000000'