QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#104866 | #5433. Absolute Difference | maspy | AC ✓ | 382ms | 63380kb | C++20 | 24.8kb | 2023-05-12 09:01:19 | 2023-05-12 09:01:21 |
Judging History
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;
}
Details
Tip: Click on the bar to expand more detailed information
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'