QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#280792#7783. Military Maneuverucup-team180#AC ✓1949ms4660kbC++2046.4kb2023-12-09 17:55:382023-12-09 17:55:41

Judging History

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

  • [2023-12-09 17:55:41]
  • 评测
  • 测评结果:AC
  • 用时:1949ms
  • 内存:4660kb
  • [2023-12-09 17:55:38]
  • 提交

answer

#pragma region Macros
#ifdef noimi
#include "my_template.hpp"
#else
#pragma GCC target("avx2")
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")

#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 <immintrin.h>
#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 <tuple>
#include <type_traits>
#include <utility>
#include <variant>

#ifdef noimi
#define oj_local(a, b) b
#else
#define oj_local(a, b) a
#endif

#define LOCAL if(oj_local(0, 1))
#define OJ if(oj_local(1, 0))

using namespace std;
using ll = long long;
using ull = unsigned long long int;
using i128 = __int128_t;
using pii = pair<int, int>;
using pll = pair<ll, ll>;
using ld = long double;
template <typename T> using vc = vector<T>;
template <typename T> using vvc = vector<vc<T>>;
template <typename T> using vvvc = vector<vvc<T>>;
using vi = vc<int>;
using vl = vc<ll>;
using vpi = vc<pii>;
using vpl = vc<pll>;
template <class T> using pq = priority_queue<T>;
template <class T> using pqg = priority_queue<T, vector<T>, greater<T>>;
template <typename T> int si(const T &x) { return x.size(); }
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); }
vi iota(int n) {
    vi a(n);
    return iota(a.begin(), a.end(), 0), a;
}
template <typename T> vi iota(const vector<T> &a, bool greater = false) {
    vi res(a.size());
    iota(res.begin(), res.end(), 0);
    sort(res.begin(), res.end(), [&](int i, int j) {
        if(greater) return a[i] > a[j];
        return a[i] < a[j];
    });
    return res;
}

// macros
#define overload5(a, b, c, d, e, name, ...) name
#define overload4(a, b, c, d, name, ...) name
#define endl '\n'
#define REP0(n) for(ll jidlsjf = 0; jidlsjf < n; ++jidlsjf)
#define REP1(i, n) for(ll i = 0; i < (n); ++i)
#define REP2(i, a, b) for(ll i = (a); i < (b); ++i)
#define REP3(i, a, b, c) for(ll i = (a); i < (b); i += (c))
#define rep(...) overload4(__VA_ARGS__, REP3, REP2, REP1, REP0)(__VA_ARGS__)
#define per0(n) for(int jidlsjf = 0; jidlsjf < (n); ++jidlsjf)
#define per1(i, n) for(ll i = (n)-1; i >= 0; --i)
#define per2(i, a, b) for(ll i = (a)-1; i >= b; --i)
#define per3(i, a, b, c) for(ll i = (a)-1; i >= (b); i -= (c))
#define per(...) overload4(__VA_ARGS__, per3, per2, per1, per0)(__VA_ARGS__)
#define fore0(a) rep(a.size())
#define fore1(i, a) for(auto &&i : a)
#define fore2(a, b, v) for(auto &&[a, b] : v)
#define fore3(a, b, c, v) for(auto &&[a, b, c] : v)
#define fore4(a, b, c, d, v) for(auto &&[a, b, c, d] : v)
#define fore(...) overload5(__VA_ARGS__, fore4, fore3, fore2, fore1, fore0)(__VA_ARGS__)
#define setbits(j, n) for(ll iiiii = (n), j = lowbit(iiiii); iiiii; iiiii ^= 1 << j, j = lowbit(iiiii))
#define perm(v) for(bool permrepflag = true; (permrepflag ? exchange(permrepflag, false) : next_permutation(all(v)));)
#define fi first
#define se second
#define pb push_back
#define ppb pop_back
#define ppf pop_front
#define eb emplace_back
#define drop(s) cout << #s << endl, exit(0)
#define si(c) (int)(c).size()
#define lb(c, x) distance((c).begin(), lower_bound(all(c), (x)))
#define lbg(c, x) distance((c).begin(), lower_bound(all(c), (x), greater{}))
#define ub(c, x) distance((c).begin(), upper_bound(all(c), (x)))
#define ubg(c, x) distance((c).begin(), upper_bound(all(c), (x), greater{}))
#define rng(v, l, r) v.begin() + (l), v.begin() + (r)
#define all(c) begin(c), end(c)
#define rall(c) rbegin(c), rend(c)
#define SORT(v) sort(all(v))
#define REV(v) reverse(all(v))
#define UNIQUE(x) SORT(x), x.erase(unique(all(x)), x.end())
template <typename T = ll, typename S> T SUM(const S &v) { return accumulate(all(v), T(0)); }
#define MIN(v) *min_element(all(v))
#define MAX(v) *max_element(all(v))
#define overload2(_1, _2, name, ...) name
#define vec(type, name, ...) vector<type> name(__VA_ARGS__)
#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__))))
constexpr pii dx4[4] = {pii{1, 0}, pii{0, 1}, pii{-1, 0}, pii{0, -1}};
constexpr pii dx8[8] = {{1, 0}, {1, 1}, {0, 1}, {-1, 1}, {-1, 0}, {-1, -1}, {0, -1}, {1, -1}};

namespace yesno_impl {
const string YESNO[2] = {"NO", "YES"};
const string YesNo[2] = {"No", "Yes"};
const string yesno[2] = {"no", "yes"};
const string firstsecond[2] = {"second", "first"};
const string FirstSecond[2] = {"Second", "First"};
const string possiblestr[2] = {"impossible", "possible"};
const string Possiblestr[2] = {"Impossible", "Possible"};
void YES(bool t = 1) { cout << YESNO[t] << endl; }
void NO(bool t = 1) { YES(!t); }
void Yes(bool t = 1) { cout << YesNo[t] << endl; }
void No(bool t = 1) { Yes(!t); }
void yes(bool t = 1) { cout << yesno[t] << endl; }
void no(bool t = 1) { yes(!t); }
void first(bool t = 1) { cout << firstsecond[t] << endl; }
void First(bool t = 1) { cout << FirstSecond[t] << endl; }
void possible(bool t = 1) { cout << possiblestr[t] << endl; }
void Possible(bool t = 1) { cout << Possiblestr[t] << endl; }
}; // namespace yesno_impl
using namespace yesno_impl;

#define INT(...)                                                                                                                                               \
    int __VA_ARGS__;                                                                                                                                           \
    IN(__VA_ARGS__)
#define INTd(...)                                                                                                                                              \
    int __VA_ARGS__;                                                                                                                                           \
    IN2(__VA_ARGS__)
#define LL(...)                                                                                                                                                \
    ll __VA_ARGS__;                                                                                                                                            \
    IN(__VA_ARGS__)
#define LLd(...)                                                                                                                                               \
    ll __VA_ARGS__;                                                                                                                                            \
    IN2(__VA_ARGS__)
#define STR(...)                                                                                                                                               \
    string __VA_ARGS__;                                                                                                                                        \
    IN(__VA_ARGS__)
#define CHR(...)                                                                                                                                               \
    char __VA_ARGS__;                                                                                                                                          \
    IN(__VA_ARGS__)
#define DBL(...)                                                                                                                                               \
    double __VA_ARGS__;                                                                                                                                        \
    IN(__VA_ARGS__)
#define VEC(type, name, size)                                                                                                                                  \
    vector<type> name(size);                                                                                                                                   \
    IN(name)
#define VECd(type, name, size)                                                                                                                                 \
    vector<type> name(size);                                                                                                                                   \
    IN2(name)
#define VEC2(type, name1, name2, size)                                                                                                                         \
    vector<type> name1(size), name2(size);                                                                                                                     \
    for(int i = 0; i < size; i++) IN(name1[i], name2[i])
#define VEC2d(type, name1, name2, size)                                                                                                                        \
    vector<type> name1(size), name2(size);                                                                                                                     \
    for(int i = 0; i < size; i++) IN2(name1[i], name2[i])
#define VEC3(type, name1, name2, name3, size)                                                                                                                  \
    vector<type> name1(size), name2(size), name3(size);                                                                                                        \
    for(int i = 0; i < size; i++) IN(name1[i], name2[i], name3[i])
#define VEC3d(type, name1, name2, name3, size)                                                                                                                 \
    vector<type> name1(size), name2(size), name3(size);                                                                                                        \
    for(int i = 0; i < size; i++) IN2(name1[i], name2[i], name3[i])
#define VEC4(type, name1, name2, name3, name4, size)                                                                                                           \
    vector<type> name1(size), name2(size), name3(size), name4(size);                                                                                           \
    for(int i = 0; i < size; i++) IN(name1[i], name2[i], name3[i], name4[i]);
#define VEC4d(type, name1, name2, name3, name4, size)                                                                                                          \
    vector<type> name1(size), name2(size), name3(size), name4(size);                                                                                           \
    for(int i = 0; i < size; i++) IN2(name1[i], name2[i], name3[i], name4[i]);
#define VV(type, name, h, w)                                                                                                                                   \
    vector<vector<type>> name(h, vector<type>(w));                                                                                                             \
    IN(name)
#define VVd(type, name, h, w)                                                                                                                                  \
    vector<vector<type>> name(h, vector<type>(w));                                                                                                             \
    IN2(name)
int scan() { return getchar(); }
void scan(int &a) { cin >> a; }
void scan(long long &a) { cin >> a; }
void scan(char &a) { cin >> a; }
void scan(double &a) { cin >> a; }
void scan(string &a) { cin >> a; }
template <class T, class S> void scan(pair<T, S> &p) { scan(p.first), scan(p.second); }
template <class T> void scan(vector<T> &);
template <class T> void scan(vector<T> &a) {
    for(auto &i : a) scan(i);
}
template <class T> void scan(T &a) { cin >> a; }
void IN() {}
void IN2() {}
template <class Head, class... Tail> void IN(Head &head, Tail &...tail) {
    scan(head);
    IN(tail...);
}
template <class Head, class... Tail> void IN2(Head &head, Tail &...tail) {
    scan(head);
    --head;
    IN2(tail...);
}

template <int p = -1> void pat() {}
template <int p = -1, class Head, class... Tail> void pat(Head &h, Tail &...tail) {
    h += p;
    pat<p>(tail...);
}

template <typename T, typename S> T ceil(T x, S y) {
    assert(y);
    return (y < 0 ? ceil(-x, -y) : (x > 0 ? (x + y - 1) / y : x / y));
}

template <typename T, typename S> T floor(T x, S y) {
    assert(y);
    return (y < 0 ? floor(-x, -y) : (x > 0 ? x / y : x / y - (x % y == 0 ? 0 : 1)));
}
template <typename T, typename S, typename U> U bigmul(const T &x, const S &y, const U &lim) { // clamp(x * y, -lim, lim)
    if(x < 0 and y < 0) return bigmul(-x, -y, lim);
    if(x < 0) return -bigmul(-x, y, lim);
    if(y < 0) return -bigmul(x, -y, lim);
    return y == 0 or x <= lim / y ? x * y : lim;
}
template <class T> T POW(T x, int n) {
    T res = 1;
    for(; n; n >>= 1, x *= x)
        if(n & 1) res *= x;
    return res;
}
template <class T, class S> T POW(T x, S n, const ll &mod) {
    T res = 1;
    x %= mod;
    for(; n; n >>= 1, x = x * x % mod)
        if(n & 1) res = res * x % mod;
    return res;
}
vector<pll> factor(ll x) {
    vector<pll> ans;
    for(ll i = 2; i * i <= x; i++)
        if(x % i == 0) {
            ans.push_back({i, 1});
            while((x /= i) % i == 0) ans.back().second++;
        }
    if(x != 1) ans.push_back({x, 1});
    return ans;
}
template <class T> vector<T> divisor(T x) {
    vector<T> ans;
    for(T i = 1; i * i <= x; i++)
        if(x % i == 0) {
            ans.pb(i);
            if(i * i != x) ans.pb(x / i);
        }
    return ans;
}
template <typename T> void zip(vector<T> &x) {
    vector<T> y = x;
    UNIQUE(y);
    for(int i = 0; i < x.size(); ++i) { x[i] = lb(y, x[i]); }
}
template <class S> void fold_in(vector<S> &v) {}
template <typename Head, typename... Tail, class S> void fold_in(vector<S> &v, Head &&a, Tail &&...tail) {
    for(auto e : a) v.emplace_back(e);
    fold_in(v, tail...);
}
template <class S> void renumber(vector<S> &v) {}
template <typename Head, typename... Tail, class S> void renumber(vector<S> &v, Head &&a, Tail &&...tail) {
    for(auto &&e : a) e = lb(v, e);
    renumber(v, tail...);
}
template <class S, class... Args> vector<S> zip(vector<S> &head, Args &&...args) {
    vector<S> v;
    fold_in(v, head, args...);
    sort(all(v)), v.erase(unique(all(v)), v.end());
    renumber(v, head, args...);
    return v;
}

template <typename S> void rearrange(const vector<S> &id) {}
template <typename S, typename T> void rearrange_exec(const vector<S> &id, vector<T> &v) {
    vector<T> w(v.size());
    rep(i, si(id)) w[i] = v[id[i]];
    v.swap(w);
}
// 並び替える順番, 並び替える vector 達
template <typename S, typename Head, typename... Tail> void rearrange(const vector<S> &id, Head &a, Tail &...tail) {
    rearrange_exec(id, a);
    rearrange(id, tail...);
}

template <typename T> vector<T> RUI(const vector<T> &v) {
    vector<T> res(v.size() + 1);
    for(int i = 0; i < v.size(); i++) res[i + 1] = res[i] + v[i];
    return res;
}
template <typename T> void zeta_supersetsum(vector<T> &f) {
    int n = f.size();
    for(int i = 1; i < n; i <<= 1) rep(b, n) if(!(i & b)) f[b] += f[b | i];
}

template <typename T> void zeta_subsetsum(vector<T> &f) {
    int n = f.size();
    for(int i = 1; i < n; i <<= 1) rep(b, n) if(!(i & b)) f[b | i] += f[b];
}
template <typename T> void mobius_subset(vector<T> &f) {
    int n = f.size();
    for(int i = 1; i < n; i <<= 1) rep(b, n) if(!(i & b)) f[b] -= f[b | i];
}
template <typename T> void mobius_superset(vector<T> &f) {
    int n = f.size();
    for(int i = 1; i < n; i <<= 1) rep(b, n) if(!(i & b)) f[b | i] -= f[b];
}
// 反時計周りに 90 度回転
template <typename T> void rot(vector<vector<T>> &v) {
    if(empty(v)) return;
    int n = v.size(), m = v[0].size();
    vector<vector<T>> res(m, vector<T>(n));
    rep(i, n) rep(j, m) res[m - 1 - j][i] = v[i][j];
    v.swap(res);
}

vector<int> counter(const vector<int> &v, int max_num = -1) {
    if(max_num == -1) max_num = MAX(v);
    vector<int> res(max_num + 1);
    fore(e, v) res[e]++;
    return res;
}

// x in [l, r)
template <class T, class S> bool inc(const T &x, const S &l, const S &r) { return l <= x and x < r; }
template <class T, class S> bool inc(const T &x, const pair<S, S> &p) { return p.first <= x and x < p.second; }

// 便利関数
constexpr ll ten(int n) { return n == 0 ? 1 : ten(n - 1) * 10; }
constexpr ll tri(ll n) { return n * (n + 1) / 2; }
// l + ... + r
constexpr ll tri(ll l, ll r) { return (l + r) * (r - l + 1) / 2; }
ll max(int x, ll y) { return max((ll)x, y); }
ll max(ll x, int y) { return max(x, (ll)y); }
int min(int x, ll y) { return min((ll)x, y); }
int min(ll x, int y) { return min(x, (ll)y); }
// bit 演算系
#define bit(i) (1LL << i)       // (1 << i)
#define test(b, i) (b >> i & 1) // b の i bit 目が立っているか
ll pow2(int i) { return 1LL << i; }
int topbit(signed t) { return t == 0 ? -1 : 31 - __builtin_clz(t); }
int topbit(ll t) { return t == 0 ? -1 : 63 - __builtin_clzll(t); }
int lowbit(signed a) { return a == 0 ? 32 : __builtin_ctz(a); }
int lowbit(ll a) { return a == 0 ? 64 : __builtin_ctzll(a); }
// int allbit(int n) { return (1 << n) - 1; }
constexpr ll mask(int n) { return (1LL << n) - 1; }
// int popcount(signed t) { return __builtin_popcount(t); }
// int popcount(ll t) { return __builtin_popcountll(t); }
int popcount(uint64_t t) { return __builtin_popcountll(t); }
static inline uint64_t popcount64(uint64_t x) {
    uint64_t m1 = 0x5555555555555555ll;
    uint64_t m2 = 0x3333333333333333ll;
    uint64_t m4 = 0x0F0F0F0F0F0F0F0Fll;
    uint64_t h01 = 0x0101010101010101ll;

    x -= (x >> 1) & m1;
    x = (x & m2) + ((x >> 2) & m2);
    x = (x + (x >> 4)) & m4;

    return (x * h01) >> 56;
}
bool ispow2(int i) { return i && (i & -i) == i; }

ll rnd(ll l, ll r) { //[l, r)
#ifdef noimi
    static mt19937_64 gen;
#else
    static mt19937_64 gen(chrono::steady_clock::now().time_since_epoch().count());
#endif
    return uniform_int_distribution<ll>(l, r - 1)(gen);
}
ll rnd(ll n) { return rnd(0, n); }

template <class t> void random_shuffle(vc<t> &a) { rep(i, si(a)) swap(a[i], a[rnd(0, i + 1)]); }

int in() {
    int x;
    cin >> x;
    return x;
}
ll lin() {
    unsigned long long x;
    cin >> x;
    return x;
}

template <class T, class S> pair<T, S> operator-(const pair<T, S> &x) { return pair<T, S>(-x.first, -x.second); }
template <class T, class S> pair<T, S> operator-(const pair<T, S> &x, const pair<T, S> &y) { return pair<T, S>(x.fi - y.fi, x.se - y.se); }
template <class T, class S> pair<T, S> operator+(const pair<T, S> &x, const pair<T, S> &y) { return pair<T, S>(x.fi + y.fi, x.se + y.se); }
template <class T> pair<T, T> operator&(const pair<T, T> &l, const pair<T, T> &r) { return pair<T, T>(max(l.fi, r.fi), min(l.se, r.se)); }
template <class T, class S> pair<T, S> operator+=(pair<T, S> &l, const pair<T, S> &r) { return l = l + r; }
template <class T, class S> pair<T, S> operator-=(pair<T, S> &l, const pair<T, S> &r) { return l = l - r; }
template <class T> bool intersect(const pair<T, T> &l, const pair<T, T> &r) { return (l.se < r.se ? r.fi < l.se : l.fi < r.se); }

template <class T> vector<T> &operator++(vector<T> &v) {
    fore(e, v) e++;
    return v;
}
template <class T> vector<T> operator++(vector<T> &v, int) {
    auto res = v;
    fore(e, v) e++;
    return res;
}
template <class T> vector<T> &operator--(vector<T> &v) {
    fore(e, v) e--;
    return v;
}
template <class T> vector<T> operator--(vector<T> &v, int) {
    auto res = v;
    fore(e, v) e--;
    return res;
}
template <class T> void connect(vector<T> &l, const vector<T> &r) { fore(e, r) l.eb(e); }
template <class T> vector<T> operator+(const vector<T> &l, const vector<T> &r) {
    vector<T> res(max(si(l), si(r)));
    rep(i, si(l)) res[i] += l[i];
    rep(i, si(r)) res[i] += r[i];
    return res;
}
template <class T> vector<T> operator-(const vector<T> &l, const vector<T> &r) {
    vector<T> res(max(si(l), si(r)));
    rep(i, si(l)) res[i] += l[i];
    rep(i, si(r)) res[i] -= r[i];
    return res;
}
template <class T> vector<T> &operator+=(const vector<T> &l, const vector<T> &r) {
    if(si(l) < si(r)) l.resize(si(r));
    rep(i, si(r)) l[i] += r[i];
    return l;
}
template <class T> vector<T> &operator-=(const vector<T> &l, const vector<T> &r) {
    if(si(l) < si(r)) l.resize(si(r));
    rep(i, si(r)) l[i] -= r[i];
    return l;
}
template <class T> vector<T> &operator+=(vector<T> &v, const T &x) {
    fore(e, v) e += x;
    return v;
}
template <class T> vector<T> &operator-=(vector<T> &v, const T &x) {
    fore(e, v) e -= x;
    return v;
}

template <typename T> struct edge {
    int from, to;
    T cost;
    int id;
    edge(int to, T cost) : from(-1), to(to), cost(cost) {}
    edge(int from, int to, T cost) : from(from), to(to), cost(cost) {}
    edge(int from, int to, T cost, int id) : from(from), to(to), cost(cost), id(id) {}
    constexpr bool operator<(const edge<T> &rhs) const noexcept { return cost < rhs.cost; }
    edge &operator=(const int &x) {
        to = x;
        return *this;
    }
    operator int() const { return to; }
    friend ostream operator<<(ostream &os, const edge &e) { return os << e.to; }
};
template <typename T> using Edges = vector<edge<T>>;

template <typename T = int> Edges<T> read_edges(int m, bool weighted = false) {
    Edges<T> res;
    res.reserve(m);
    for(int i = 0; i < m; i++) {
        int u, v, c = 0;
        scan(u), scan(v), u--, v--;
        if(weighted) scan(c);
        res.eb(u, v, c, i);
    }
    return res;
}

using Tree = vector<vector<int>>;
using Graph = vector<vector<int>>;
template <class T> using Wgraph = vector<vector<edge<T>>>;
Graph getG(int n, int m = -1, bool directed = false, int margin = 1) {
    Tree res(n);
    if(m == -1) m = n - 1;
    while(m--) {
        int a, b;
        cin >> a >> b;
        a -= margin, b -= margin;
        res[a].emplace_back(b);
        if(!directed) res[b].emplace_back(a);
    }
    return res;
}
Graph getTreeFromPar(int n, int margin = 1) {
    Graph res(n);
    for(int i = 1; i < n; i++) {
        int a;
        cin >> a;
        res[a - margin].emplace_back(i);
    }
    return res;
}
template <class T> Wgraph<T> getWg(int n, int m = -1, bool directed = false, int margin = 1) {
    Wgraph<T> res(n);
    if(m == -1) m = n - 1;
    while(m--) {
        int a, b;
        T c;
        scan(a), scan(b), scan(c);
        a -= margin, b -= margin;
        res[a].emplace_back(b, c);
        if(!directed) res[b].emplace_back(a, c);
    }
    return res;
}
void add(Graph &G, int x, int y) { G[x].eb(y), G[y].eb(x); }
template <class S, class T> void add(Wgraph<S> &G, int x, int y, T c) { G[x].eb(y, c), G[y].eb(x, c); }

#define TEST                                                                                                                                                   \
    INT(testcases);                                                                                                                                            \
    while(testcases--)

i128 abs(const i128 &x) { return x > 0 ? x : -x; }
istream &operator>>(istream &is, i128 &v) {
    string s;
    is >> s;
    v = 0;
    for(int i = 0; i < (int)s.size(); i++) {
        if(isdigit(s[i])) { v = v * 10 + s[i] - '0'; }
    }
    if(s[0] == '-') { v *= -1; }
    return is;
}

ostream &operator<<(ostream &os, const i128 &v) {
    if(v == 0) { return (os << "0"); }
    i128 num = v;
    if(v < 0) {
        os << '-';
        num = -num;
    }
    string s;
    for(; num > 0; num /= 10) { s.push_back((char)(num % 10) + '0'); }
    reverse(s.begin(), s.end());
    return (os << s);
}
namespace aux {
template <typename T, unsigned N, unsigned L> struct tp {
    static void output(std::ostream &os, const T &v) {
        os << std::get<N>(v) << (&os == &cerr ? ", " : " ");
        tp<T, N + 1, L>::output(os, v);
    }
};
template <typename T, unsigned N> struct tp<T, N, N> {
    static void output(std::ostream &os, const T &v) { os << std::get<N>(v); }
};
} // namespace aux
template <typename... Ts> std::ostream &operator<<(std::ostream &os, const std::tuple<Ts...> &t) {
    if(&os == &cerr) { os << '('; }
    aux::tp<std::tuple<Ts...>, 0, sizeof...(Ts) - 1>::output(os, t);
    if(&os == &cerr) { os << ')'; }
    return os;
}
template <typename T, typename S, typename U> std::ostream &operator<<(std::ostream &os, const priority_queue<T, S, U> &_pq) {
    auto pq = _pq;
    vector<T> res;
    while(!empty(pq)) res.emplace_back(pq.top()), pq.pop();
    return os << res;
}
template <class T, class S> ostream &operator<<(ostream &os, const pair<T, S> &p) {
    if(&os == &cerr) { return os << "(" << p.first << ", " << p.second << ")"; }
    return os << p.first << " " << p.second;
}
template <class Ch, class Tr, class Container> std::basic_ostream<Ch, Tr> &operator<<(std::basic_ostream<Ch, Tr> &os, const Container &x) {
    bool f = true;
    if(&os == &cerr) os << "[";
    for(auto &y : x) {
        if(&os == &cerr)
            os << (f ? "" : ", ") << y;
        else
            os << (f ? "" : " ") << y;
        f = false;
    }
    if(&os == &cerr) os << "]";
    return os;
}

#define dump(...) static_cast<void>(0)
#define dbg(...) static_cast<void>(0)

void OUT() { cout << endl; }
template <class Head, class... Tail> void OUT(const Head &head, const Tail &...tail) {
    cout << head;
    if(sizeof...(tail)) cout << ' ';
    OUT(tail...);
}

template <typename T> static constexpr T inf = numeric_limits<T>::max() / 2;
template <class T, class S> constexpr pair<T, S> inf<pair<T, S>> = {inf<T>, inf<S>};

template <class T> void OUT2(const T &t, T INF = inf<T>, T res = -1) { OUT(t != INF ? t : res); }
template <class T> void OUT2(vector<T> &v, T INF = inf<T>, T res = -1) {
    fore(e, v) if(e == INF) e = res;
    OUT(v);
    fore(e, v) if(e == res) e = INF;
}

template <class F> struct REC {
    F f;
    REC(F &&f_) : f(forward<F>(f_)) {}
    template <class... Args> auto operator()(Args &&...args) const { return f(*this, forward<Args>(args)...); }
};

template <class S> vector<pair<S, int>> runLength(const vector<S> &v) {
    vector<pair<S, int>> res;
    for(auto &e : v) {
        if(res.empty() or res.back().fi != e)
            res.eb(e, 1);
        else
            res.back().se++;
    }
    return res;
}
vector<pair<char, int>> runLength(const string &v) {
    vector<pair<char, int>> res;
    for(auto &e : v) {
        if(res.empty() or res.back().fi != e)
            res.eb(e, 1);
        else
            res.back().se++;
    }
    return res;
}

struct string_converter {
    char start = 0;
    char type(const char &c) const { return (islower(c) ? 'a' : isupper(c) ? 'A' : isdigit(c) ? '0' : 0); }
    int convert(const char &c) {
        if(!start) start = type(c);
        return c - start;
    }
    int convert(const char &c, const string &chars) { return chars.find(c); }
    template <typename T> auto convert(const T &v) {
        vector<decltype(convert(v[0]))> ret;
        ret.reserve(size(v));
        for(auto &&e : v) ret.emplace_back(convert(e));
        return ret;
    }
    template <typename T> auto convert(const T &v, const string &chars) {
        vector<decltype(convert(v[0], chars))> ret;
        ret.reserve(size(v));
        for(auto &&e : v) ret.emplace_back(convert(e, chars));
        return ret;
    }
    int operator()(const char &v, char s = 0) {
        start = s;
        return convert(v);
    }
    int operator()(const char &v, const string &chars) { return convert(v, chars); }
    template <typename T> auto operator()(const T &v, char s = 0) {
        start = s;
        return convert(v);
    }
    template <typename T> auto operator()(const T &v, const string &chars) { return convert(v, chars); }
} toint;

template <class T, class F> T bin_search(T ok, T ng, const F &f) {
    while(abs(ok - ng) > 1) {
        T mid = ok + ng >> 1;
        (f(mid) ? ok : ng) = mid;
    }
    return ok;
}
template <class T, class F> T bin_search_double(T ok, T ng, const F &f, int iter = 80) {
    while(iter--) {
        // T mid = (ok + ng) / 2;
        T mid = sqrtl(ok * ng);
        (f(mid) ? ok : ng) = mid;
    }
    return ok;
}

struct Setup_io {
    Setup_io() {
        ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
        cout << fixed << setprecision(11);
    }
} setup_io;

#endif

#pragma endregion

namespace fast_gcd {
using u64 = uint64_t;
using u32 = uint32_t;

__attribute__((target("bmi"))) constexpr u64 binary_gcd(u64 a, u64 b) {
    if(a == 0 || b == 0) return a + b;
    int n = __builtin_ctzll(a);
    int m = __builtin_ctzll(b);
    a >>= n;
    b >>= m;
    while(a != b) {
        int m = __builtin_ctzll(a - b);
        bool f = a > b;
        u64 c = f ? a : b;
        b = f ? b : a;
        a = (c - b) >> m;
    }
    return a << min(n, m);
}
} // namespace fast_gcd

using fast_gcd::binary_gcd;
// q / p
struct frac {
    template <typename T> static constexpr inline T gcd(const T a, const T b) { return (b == 0) ? a : gcd(b, a % b); }
    ll q, p;
    inline constexpr void simplify() {
        if(p < 0) {
            p *= -1;
            q *= -1;
        }
        ll g = binary_gcd(q < 0 ? -q : q, p);
        if(g) {
            p /= g;
            q /= g;
            if(p == 0 and q < 0) q = 1;
        }
    }
    constexpr frac(ll q = 0, ll p = 1) noexcept : q(q), p(p) { simplify(); }

    constexpr bool operator<(const frac &r) const { return q * r.p < p * r.q; }
    constexpr bool operator>(const frac &r) const { return q * r.p > p * r.q; }
    constexpr bool operator<=(const frac &r) const { return q * r.p <= p * r.q; }
    constexpr bool operator>=(const frac &r) const { return q * r.p >= p * r.q; }
    template <class T> constexpr bool operator<(const T &r) const { return *this < frac(r); }
    template <class T> constexpr bool operator>(const T &r) const { return *this > frac(r); }
    constexpr bool operator==(const frac &r) const { return q * r.p == p * r.q; }
    constexpr bool operator!=(const frac &r) const { return !((*this) == r); }
    constexpr frac operator+() const noexcept { return *this; }
    constexpr frac operator-() const noexcept { return frac(-q, p); }
    constexpr frac operator+(const frac r) const noexcept { return frac(*this) += r; }
    constexpr frac operator-(const frac r) const noexcept { return frac(*this) -= r; }
    constexpr frac operator*(const frac r) const noexcept { return frac(*this) *= r; }
    constexpr frac operator/(const frac r) const noexcept { return frac(*this) /= r; }
    constexpr frac &operator+=(const frac &r) noexcept {
        ll g = binary_gcd(p, r.p);
        q = r.p / g * q + p / g * r.q;
        p = p / g * r.p;
        (*this).simplify();
        return *this;
    }
    constexpr frac &operator-=(const frac &r) noexcept {
        ll g = binary_gcd(p, r.p);
        q = r.p / g * q - p / g * r.q;
        p = p / g * r.p;
        (*this).simplify();
        return *this;
    }
    constexpr frac &operator*=(const frac &r) noexcept {
        q *= r.q;
        p *= r.p;
        (*this).simplify();
        return *this;
    }
    constexpr frac &operator/=(const frac &r) noexcept {
        q *= r.p;
        p *= r.q;
        (*this).simplify();
        return *this;
    }

    void print() {
        long double tmp = (long double)q / (long double)p;
        cout << tmp;
    }
};
istream &operator>>(istream &is, frac &p) {
    ll a;
    is >> a;
    p = frac(a, 1);
    return is;
}
ostream &operator<<(ostream &os, const frac &r) { return os << 1.0 * r.q / r.p; }

namespace Geometry {
using T = long double;
constexpr T eps = 1e-9;

bool eq(const T &x, const T &y) { return abs(x - y) <= eps; }
inline constexpr int type(T x, T y) {
    if(x == 0 and y == 0) return 0;
    if(y < 0 or (y == 0 and x > 0)) return -1;
    return 1;
}
struct Point {
    T x, y;
    constexpr Point(T _x = 0, T _y = 0) : x(_x), y(_y) {}
    constexpr Point operator+() const noexcept { return *this; }
    constexpr Point operator-() const noexcept { return Point(-x, -y); }
    constexpr Point operator+(const Point &p) const { return Point(x + p.x, y + p.y); }
    constexpr Point operator-(const Point &p) const { return Point(x - p.x, y - p.y); }
    constexpr Point &operator+=(const Point &p) { return x += p.x, y += p.y, *this; }
    constexpr Point &operator-=(const Point &p) { return x -= p.x, y -= p.y, *this; }
    constexpr T operator*(const Point &p) const { return x * p.x + y * p.y; }
    constexpr Point &operator*=(const T &k) { return x *= k, y *= k, *this; }
    constexpr Point operator*(const T &k) { return Point(x * k, y * k); }
    constexpr bool operator==(const Point &r) const noexcept { return r.x == x and r.y == y; }
    constexpr T cross(const Point &r) const { return x * r.y - y * r.x; }

    constexpr bool operator<(const Point &r) const { return pair(x, y) < pair(r.x, r.y); }

    // 1 : left, 0 : same, -1 : right
    constexpr int toleft(const Point &r) const {
        auto t = cross(r);
        return t > eps ? 1 : t < -eps ? -1 : 0;
    }

    constexpr bool arg_cmp(const Point &r) const {
        int L = type(x, y), R = type(r.x, r.y);
        if(L != R) return L < R;

        T X = x * r.y, Y = r.x * y;
        if(X != Y) return X > Y;
        return x < r.x;
    }
};
bool arg_cmp(const Point &l, const Point &r) { return l.arg_cmp(r); }
ostream &operator<<(ostream &os, const Point &p) { return os << p.x << " " << p.y; }
istream &operator>>(istream &is, Point &p) {
    is >> p.x >> p.y;
    return is;
}

struct Line {
    Point a, b;
    Line() = default;
    Line(Point a, Point b) : a(a), b(b) {}
    // ax + by = c
    Line(T A, T B, T C) {
        if(A == 0) {
            a = Point(0, C / B), b = Point(1, C / B);
        } else if(B == 0) {
            a = Point(C / A, 0), b = Point(C / A, 1);
        } else {
            a = Point(0, C / B), b = Point(C / A, 0);
        }
    }
    // 1 : left, 0 : same, -1 : right
    constexpr int toleft(const Point &r) const {
        auto t = (b - a).cross(r - a);
        return t > eps ? 1 : t < -eps ? -1 : 0;
    }

    friend std::ostream &operator<<(std::ostream &os, Line &ls) {
        return os << "{"
                  << "(" << ls.a.x << ", " << ls.a.y << "), (" << ls.b.x << ", " << ls.b.y << ")}";
    }
};
istream &operator>>(istream &is, Line &p) { return is >> p.a >> p.b; }
Point rotate(long double theta, const Point &p) { return Point(cosl(theta) * p.x - sinl(theta) * p.y, sinl(theta) * p.x + cosl(theta) * p.y); }

struct Segment : Line {
    Segment() = default;
    Segment(Point a, Point b) : Line(a, b) {}
};

ostream &operator<<(ostream &os, Segment &p) { return os << p.a << " to " << p.b; }
istream &operator>>(istream &is, Segment &p) {
    is >> p.a >> p.b;
    return is;
}

struct Circle {
    Point p;
    T r;
    Circle() = default;
    Circle(Point p, T r) : p(p), r(r) {}
};

using pt = Point;
using Points = vector<pt>;
using Polygon = Points;
T cross(const pt &x, const pt &y) { return x.x * y.y - x.y * y.x; }
T dot(const pt &x, const pt &y) { return x.x * y.x + x.y * y.y; }

T abs2(const pt &x) { return dot(x, x); }
// http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=CGL_1_C
// 点の回転方向
int ccw(const Point &a, Point b, Point c) {
    b = b - a, c = c - a;
    if(cross(b, c) > 0) return +1;   // "COUNTER_CLOCKWISE"
    if(cross(b, c) < 0) return -1;   // "CLOCKWISE"
    if(dot(b, c) < 0) return +2;     // "ONLINE_BACK"
    if(abs2(b) < abs2(c)) return -2; // "ONLINE_FRONT"
    return 0;                        // "ON_SEGMENT"
}

// http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=CGL_2_A
// 平行判定
bool parallel(const Line &a, const Line &b) { return (cross(a.b - a.a, b.b - b.a) == 0); }

// http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=CGL_2_A
// 垂直判定
bool orthogonal(const Line &a, const Line &b) { return (dot(a.a - a.b, b.a - b.b) == 0); }

bool intersect(const Line &l, const Point &p) { return abs(ccw(l.a, l.b, p)) != 1; }

bool intersect(const Line &l, const Line &m) { return !parallel(l, m); }

bool intersect(const Segment &s, const Point &p) { return ccw(s.a, s.b, p) == 0; }

bool intersect(const Line &l, const Segment &s) { return cross(l.b - l.a, s.a - l.a) * cross(l.b - l.a, s.b - l.a) <= 0; }

// http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=CGL_2_B
bool intersect(const Segment &s, const Segment &t) { return ccw(s.a, s.b, t.a) * ccw(s.a, s.b, t.b) <= 0 && ccw(t.a, t.b, s.a) * ccw(t.a, t.b, s.b) <= 0; }

bool intersect(const Polygon &ps, const Polygon &qs) {
    int pl = si(ps), ql = si(qs), i = 0, j = 0;
    while((i < pl or j < ql) and (i < 2 * pl) and (j < 2 * ql)) {
        auto ps0 = ps[(i + pl - 1) % pl], ps1 = ps[i % pl];
        auto qs0 = qs[(j + ql - 1) % ql], qs1 = qs[j % ql];
        if(intersect(Segment(ps0, ps1), Segment(qs0, qs1))) return true;
        Point a = ps1 - ps0;
        Point b = qs1 - qs0;
        T v = cross(a, b);
        T va = cross(qs1 - qs0, ps1 - qs0);
        T vb = cross(ps1 - ps0, qs1 - ps0);

        if(!v and va < 0 and vb < 0) return false;
        if(!v and !va and !vb) {
            i += 1;
        } else if(v >= 0) {
            if(vb > 0)
                i += 1;
            else
                j += 1;
        } else {
            if(va > 0)
                j += 1;
            else
                i += 1;
        }
    }
    return false;
}

T norm(const Point &p) { return p.x * p.x + p.y * p.y; }
Point projection(const Segment &l, const Point &p) {
    T t = dot(p - l.a, l.a - l.b) / norm(l.a - l.b);
    return l.a + (l.a - l.b) * t;
}

Point crosspoint(const Line &l, const Line &m) {
    T A = cross(l.b - l.a, m.b - m.a);
    T B = cross(l.b - l.a, l.b - m.a);
    if(A == 0 and B == 0) return m.a;
    return m.a + (m.b - m.a) * (B / A);
}

// http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=CGL_2_C
Point crosspoint(const Segment &l, const Segment &m) { return crosspoint(Line(l), Line(m)); }

// http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=CGL_3_B
// 凸性判定
bool is_convex(const Points &p) {
    int n = (int)p.size();
    for(int i = 0; i < n; i++) {
        if(ccw(p[(i + n - 1) % n], p[i], p[(i + 1) % n]) == -1) return false;
    }
    return true;
}

Points convex_hull(Points p) {
    int n = p.size(), k = 0;
    if(n <= 2) return p;
    sort(begin(p), end(p), [](pt x, pt y) { return (x.x != y.x ? x.x < y.x : x.y < y.y); });
    Points ch(2 * n);
    for(int i = 0; i < n; ch[k++] = p[i++]) {
        while(k >= 2 && cross(ch[k - 1] - ch[k - 2], p[i] - ch[k - 1]) <= 0) --k;
    }
    for(int i = n - 2, t = k + 1; i >= 0; ch[k++] = p[i--]) {
        while(k >= t && cross(ch[k - 1] - ch[k - 2], p[i] - ch[k - 1]) <= 0) --k;
    }
    ch.resize(k - 1);
    return ch;
}

// 面積の 2 倍
T area2(const Points &p) {
    T res = 0;
    rep(i, si(p)) { res += cross(p[i], p[i == si(p) - 1 ? 0 : i + 1]); }
    return res;
}

enum { _OUT, _ON, _IN };

int contains(const Polygon &Q, const Point &p) {
    bool in = false;
    for(int i = 0; i < Q.size(); i++) {
        Point a = Q[i] - p, b = Q[(i + 1) % Q.size()] - p;
        if(a.y > b.y) swap(a, b);
        if(a.y <= 0 && 0 < b.y && cross(a, b) < 0) in = !in;
        if(cross(a, b) == 0 && dot(a, b) <= 0) return _ON;
    }
    return in ? _IN : _OUT;
}

Polygon Minkowski_sum(const Polygon &P, const Polygon &Q) {
    vector<Segment> e1(P.size()), e2(Q.size()), ed(P.size() + Q.size());
    const auto cmp = [](const Segment &u, const Segment &v) { return (u.b - u.a).arg_cmp(v.b - v.a); };
    rep(i, P.size()) e1[i] = {P[i], P[(i + 1) % P.size()]};
    rep(i, Q.size()) e2[i] = {Q[i], Q[(i + 1) % Q.size()]};
    rotate(begin(e1), min_element(all(e1), cmp), end(e1));
    rotate(begin(e2), min_element(all(e2), cmp), end(e2));
    merge(all(e1), all(e2), begin(ed), cmp);
    const auto check = [](const Points &res, const Point &u) {
        const auto back1 = res.back(), back2 = *prev(end(res), 2);
        return eq(cross(back1 - back2, u - back2), eps) and dot(back1 - back2, u - back1) >= -eps;
    };
    auto u = e1[0].a + e2[0].a;
    Points res{u};
    res.reserve(P.size() + Q.size());
    for(const auto &v : ed) {
        u = u + v.b - v.a;
        while(si(res) >= 2 and check(res, u)) res.pop_back();
        res.eb(u);
    }
    if(res.size() and check(res, res[0])) res.pop_back();
    return res;
}

// -1 : on, 0 : out, 1 : in
// O(log(n))
int is_in(const Polygon &p, const Point &a) {
    if(p.size() == 1) return a == p[0] ? -1 : 0;
    if(p.size() == 2) return intersect(Segment(p[0], p[1]), a);
    if(a == p[0]) return -1;
    if((p[1] - p[0]).toleft(a - p[0]) == -1 || (p.back() - p[0]).toleft(a - p[0]) == 1) return 0;
    const auto cmp = [&](const Point &u, const Point &v) { return (u - p[0]).toleft(v - p[0]) == 1; };
    const size_t i = lower_bound(p.begin() + 1, p.end(), a, cmp) - p.begin();
    if(i == 1) return intersect(Segment(p[0], p[i]), a) ? -1 : 0;
    if(i == p.size() - 1 && intersect(Segment(p[0], p[i]), a)) return -1;
    if(intersect(Segment(p[i - 1], p[i]), a)) return -1;
    return (p[i] - p[i - 1]).toleft(a - p[i - 1]) > 0;
}

Points halfplane_intersection(vector<Line> L, const T inf = 1e9) {
    Point box[4] = {Point(inf, inf), Point(-inf, inf), Point(-inf, -inf), Point(inf, -inf)};
    rep(i, 4) { L.emplace_back(box[i], box[(i + 1) % 4]); }
    sort(all(L), [](const Line &l, const Line &r) { return (l.b - l.a).arg_cmp(r.b - r.a); });
    deque<Line> dq;
    int len = 0;
    auto check = [](const Line &a, const Line &b, const Line &c) { return a.toleft(crosspoint(b, c)) == -1; };
    rep(i, L.size()) {
        while(dq.size() > 1 and check(L[i], *(end(dq) - 2), *(end(dq) - 1))) dq.pop_back();
        while(dq.size() > 1 and check(L[i], dq[0], dq[1])) dq.pop_front();
        // dump(L[i], si(dq));

        if(dq.size() and eq(cross(L[i].b - L[i].a, dq.back().b - dq.back().a), 0)) {
            if(dot(L[i].b - L[i].a, dq.back().b - dq.back().a) < eps) return {};
            if(L[i].toleft(dq.back().a) == -1)
                dq.pop_back();
            else
                continue;
        }
        dq.emplace_back(L[i]);
    }

    while(dq.size() > 2 and check(dq[0], *(end(dq) - 2), *(end(dq) - 1))) dq.pop_back();
    while(dq.size() > 2 and check(dq.back(), dq[0], dq[1])) dq.pop_front();
    if(si(dq) < 3) return {};
    Polygon ret(dq.size());
    rep(i, dq.size()) ret[i] = crosspoint(dq[i], dq[(i + 1) % dq.size()]);
    Polygon res;
    fore(e, ret) {
        if(empty(res) or !(res.back() == e)) res.eb(e);
    }
    while(si(res) > 1 and res.front() == res.back()) res.pop_back();
    return res;
}
} // namespace Geometry

using namespace Geometry;
Point projection(const Line &l, const Point &p) {
    long double t = dot(p - l.a, l.a - l.b) / norm(l.a - l.b);
    return l.a + (l.a - l.b) * t;
}

Point projection(const Segment &l, const Point &p) {
    long double t = dot(p - l.a, l.a - l.b) / norm(l.a - l.b);
    return l.a + (l.a - l.b) * t;
}
long double abs(Point P) { return sqrtl(abs2(P)); }

long double dist(const Point &A, const Point &B) { return hypot(A.x - B.x, A.y - B.y); }
// 三角形 PAB の内部の点の、P との距離の二乗の期待値
long double solve(const Point &P, const Point &A, const Point &B) {
    if(dist(A, B) < 1e-11) {
        Point C = (A + B) * 0.5;
        return ((P.x - C.x) * (P.x - C.x) + (P.y - C.y) * (P.y - C.y)) / 3;
    }
    auto H = projection(Line(A, B), P);
    long double h = abs(H - P), a = abs(H - A), b = abs(H - B);
    if(ccw(A, H, B) == -2) a = -a;
    return (a * a + a * b + b * b + h * h * 3) / 6;
}

const long double PI = acosl(-1);

int main() {
    INT(xl, yl, xr, yr);
    INT(n);
    Points P(n);
    rep(i, n) { cin >> P[i].x >> P[i].y; }

    vector<Line> rect;
    rect.eb(Line(Point(xl, yl), Point(xr, yl)));
    rect.eb(Line(Point(xr, yl), Point(xr, yr)));
    rect.eb(Line(Point(xr, yr), Point(xl, yr)));
    rect.eb(Line(Point(xl, yr), Point(xl, yl)));

    long double ans = 0;
    rep(i, n) {
        auto v = rect, w = rect;
        // v : min, w : max
        rep(j, n) {
            dump(i, j);
            if(i == j) continue;
            Point mid = (P[i] + P[j]) * 0.5;
            Point nxt = mid + rotate(PI / 2, mid - P[i]);
            v.eb(Line(mid, nxt));
            w.eb(Line(nxt, mid));
        }
        dump(i);
        auto f = [&](vector<Line> &v) {
            auto C = halfplane_intersection(v);
            dump(C);
            long double res = 0;
            rep(j, si(C)) {
                auto p = C[j], q = C[(j + 1) % si(C)];
                auto F1 = [&](Point p) { return -powl(p.y - P[i].y, 3) / 3; };
                auto F2 = [&](Point p) { return powl(p.x - P[i].x, 3) / 3; };

                auto p0 = p;
                auto p1 = (p * 2 + q) * (1. / 3);
                auto p2 = (p + q * 2) * (1. / 3);
                auto p3 = q;
                res += (q.x - p.x) * (F1(p0) + F1(p1) * 3 + F1(p2) * 3 + F1(p3)) / 8;
                res += (q.y - p.y) * (F2(p0) + F2(p1) * 3 + F2(p2) * 3 + F2(p3)) / 8;
            }
            dump(res);
            return res;
        };
        ans += f(w) - f(v);
    }
    OUT(ans / (xr - xl) / (yr - yl) * PI);
}

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

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

input:

0 0 2 2
2
3 1
1 3

output:

8.37758040957

result:

ok found '8.3775804', expected '8.3775804', error '0.0000000'

Test #2:

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

input:

0 0 2 2
2
5 1
1 3

output:

37.69911184308

result:

ok found '37.6991118', expected '37.6991118', error '0.0000000'

Test #3:

score: 0
Accepted
time: 1785ms
memory: 4584kb

input:

-2911 2151 336 5941
2000
-83 79
-94 47
48 -29
-47 64
84 75
-44 -86
-58 -11
-31 58
20 53
80 -19
-82 74
-60 -26
8 -68
-42 -61
-14 12
-58 -18
92 10
35 -26
71 64
76 89
-80 6
70 4
-96 -99
95 -80
-3 -22
71 -89
-75 17
-35 -82
-59 95
60 48
-74 50
-82 90
-26 5
-75 -31
-45 85
85 14
-70 -57
59 46
55 13
-23 60
...

output:

6657168.14285338541

result:

ok found '6657168.1428534', expected '6657168.1428534', error '0.0000000'

Test #4:

score: 0
Accepted
time: 1763ms
memory: 4540kb

input:

-3013 5287 7654 9132
2000
-19 49
-17 -35
64 68
48 -49
-72 -14
29 -93
-13 -8
-80 11
39 88
-31 82
68 -66
5 41
-74 -8
0 15
11 34
69 -12
15 -86
5 -78
-48 73
10 9
-2 8
81 52
41 -43
-45 -41
-23 60
-40 -45
-26 27
-32 73
8 -20
2 91
46 17
51 -66
-65 -32
37 -9
58 63
-14 -31
60 -56
-85 -22
9 -66
-7 -53
-21 40
...

output:

10130702.49401498938

result:

ok found '10130702.4940150', expected '10130702.4940150', error '0.0000000'

Test #5:

score: 0
Accepted
time: 1877ms
memory: 4528kb

input:

-5561 9559 6905 9930
2000
79 338
2 214
325 -193
-390 -157
-517 943
-759 970
449 901
-369 636
-661 -211
847 -558
223 -564
185 822
-656 -854
-991 -617
-422 -169
-63 -799
327 -911
-960 945
-948 831
-494 93
266 -299
139 -535
796 707
75 -146
10 566
72 -713
-132 -341
348 924
-739 -838
982 995
-445 500
-71...

output:

158891446.62387779343

result:

ok found '158891446.6238778', expected '158891446.6238778', error '0.0000000'

Test #6:

score: 0
Accepted
time: 1869ms
memory: 4592kb

input:

-5245 -7558 1275 934
2000
-40 125
79 -30
49 13
-127 153
-151 -28
-82 -140
147 131
123 -105
-84 71
-49 -146
-140 82
57 172
-140 -32
-173 24
-55 -101
44 142
-68 -114
122 69
-137 66
19 199
31 109
-161 -66
63 -101
65 -114
166 -66
83 -162
60 70
-19 -134
15 161
-130 22
-130 50
8 -121
150 89
132 44
-131 -3...

output:

11172638.26562360830

result:

ok found '11172638.2656236', expected '11172638.2656236', error '0.0000000'

Test #7:

score: 0
Accepted
time: 1802ms
memory: 4600kb

input:

-7167 6117 -3297 6866
2000
-346 -144
-227 169
-168 -373
-63 -227
-24 405
-232 -163
295 22
222 351
293 41
-335 260
-43 -426
-205 193
163 -284
-406 284
-202 -114
-339 -86
-413 17
-237 -394
-333 -145
-104 416
-478 -53
451 102
85 58
-124 -472
424 -88
394 243
-459 45
12 -490
-9 465
-159 -202
315 -272
-24...

output:

52361392.51502746276

result:

ok found '52361392.5150275', expected '52361392.5150275', error '0.0000000'

Test #8:

score: 0
Accepted
time: 1903ms
memory: 4512kb

input:

-6462 -5871 5937 5853
2000
386 236
-108 937
-722 354
-710 -475
462 613
-884 446
595 -675
168 394
-744 -551
761 -399
-688 258
-53 104
-614 -177
-273 -678
794 -15
224 -911
-146 -216
53 633
2 -664
202 -440
24 437
495 623
-297 682
-520 -48
598 720
-7 353
163 744
557 13
395 588
-157 -672
631 -705
-68 818...

output:

57605018.87011637932

result:

ok found '57605018.8701164', expected '57605018.8701164', error '0.0000000'

Test #9:

score: 0
Accepted
time: 1894ms
memory: 4592kb

input:

792 4703 2923 5458
2000
7281 5289
-5154 2943
-8483 3113
9380 -576
-2191 -291
-8200 898
-192 4724
1161 441
34 3999
8544 3576
-5481 4273
-9792 9565
4854 1262
4254 -3376
-5778 9480
8631 -2225
7129 2187
5344 7740
2975 6174
-2919 -7172
7990 -5117
-6823 -7233
5020 5269
-9874 1051
8841 4586
-3612 -7483
644...

output:

1133083681.54547012039

result:

ok found '1133083681.5454702', expected '1133083681.5454702', error '0.0000000'

Test #10:

score: 0
Accepted
time: 1877ms
memory: 4540kb

input:

-4075 7303 -1671 8073
2000
-10 305
-1105 -119
-238 205
-1206 -482
943 -89
-1578 223
-520 1158
21 1622
-621 -886
-163 -515
283 1802
36 -1410
213 -1921
-1539 -231
835 148
56 1448
-407 1653
1896 -533
1321 -437
530 172
132 18
1260 586
-363 -220
989 1353
281 -1907
-1116 -801
695 592
1221 -983
1731 -939
-...

output:

205950762.73416203396

result:

ok found '205950762.7341620', expected '205950762.7341621', error '0.0000000'

Test #11:

score: 0
Accepted
time: 1856ms
memory: 4596kb

input:

2121 3865 3457 7582
2000
3902 -1511
-1817 504
-3515 3188
-4470 211
536 1795
2230 -1512
3979 297
2430 901
2368 2525
-2553 -252
476 2279
-3859 2565
-754 396
3358 2726
4787 -664
173 1056
-1154 -1556
-2442 -406
-1838 976
3785 1136
-131 -421
77 4058
3773 2965
1333 -622
4188 -2571
-624 -2051
-1965 4268
-1...

output:

399702074.05400641763

result:

ok found '399702074.0540064', expected '399702074.0540065', error '0.0000000'

Test #12:

score: 0
Accepted
time: 1885ms
memory: 4564kb

input:

5377 -2525 9878 7241
2000
316 9854
1690 3184
-9795 -898
-7924 3181
-2410 1478
-3849 -8880
8447 -487
3826 -2478
1445 -2923
5459 677
8830 -3598
1045 -5139
7231 -6856
-4410 4982
-3180 -2528
-7891 -4137
6686 -3732
-6102 -1926
6562 5714
4562 -5710
223 -9921
2609 -3935
8187 55
-5017 -4465
-1387 -2695
6015...

output:

1061816977.66765942296

result:

ok found '1061816977.6676594', expected '1061816977.6676595', error '0.0000000'

Test #13:

score: 0
Accepted
time: 1788ms
memory: 4560kb

input:

-3243 -8661 4122 -2937
2000
1 7637
0 1870
1 7982
-1 -391
0 -4347
-1 2035
0 -2623
0 6943
0 1511
0 -8789
-1 7213
1 -4998
1 -8958
1 -182
-1 -318
1 3712
0 -3215
1 -5210
1 6983
-1 -2567
1 -470
-1 7652
0 -2394
1 7196
1 280
1 5785
1 545
1 8779
1 1
1 -9675
1 5137
-1 -1160
1 -3955
0 3176
0 -6143
0 519
1 5678...

output:

791760973.95850035391

result:

ok found '791760973.9585004', expected '791760973.9585004', error '0.0000000'

Test #14:

score: 0
Accepted
time: 1718ms
memory: 4548kb

input:

-4763 3483 5561 3747
2000
-3915 1
8391 -1
-4112 0
5453 -1
-8775 1
-2182 0
-3819 1
-2702 1
-7119 1
1279 0
7959 -1
-4345 0
-1024 1
-4853 -1
-2637 1
-2136 -1
-9603 -1
-5869 1
-1765 1
-3625 1
9255 0
4677 1
4660 -1
3250 1
-8156 -1
-2988 0
8492 1
-961 0
9331 -1
-1913 1
-3152 0
8877 -1
8390 0
3420 0
-7929 ...

output:

505360943.97037651562

result:

ok found '505360943.9703765', expected '505360943.9703766', error '0.0000000'

Test #15:

score: 0
Accepted
time: 1827ms
memory: 4536kb

input:

-8627 -2766 -1956 4443
2000
-4 -9231
-6 -3132
4 176
1 8378
1 6264
-3 -9699
-10 -6369
-9 -4283
-7 7401
1 -1418
7 -5096
7 -7114
-4 -3937
2 5922
-1 6133
6 -8932
-6 3552
2 4767
9 7643
3 4129
4 2295
-5 8379
1 768
-10 -8915
5 4022
-6 -6665
4 4425
-3 6046
6 3827
-5 3831
-6 -6224
5 9807
9 11
5 4503
-6 -5911...

output:

448946370.79278799176

result:

ok found '448946370.7927880', expected '448946370.7927880', error '0.0000000'

Test #16:

score: 0
Accepted
time: 1911ms
memory: 4572kb

input:

-4229 -9182 1776 -5186
2000
8444 3
3252 6
-7072 5
5793 -1
1339 2
-3500 6
-9676 -4
-1101 -8
-4997 7
462 -6
1476 7
-1331 9
561 -4
-951 -6
-466 -8
-8455 2
8033 -5
2982 9
-7803 6
8473 1
674 5
-7228 -1
-1891 -10
-3408 -7
-917 -8
9486 -5
355 9
1212 -4
3712 10
9106 1
9958 1
7446 -5
8816 -1
-1752 4
4285 0
-...

output:

438654068.21846061625

result:

ok found '438654068.2184606', expected '438654068.2184606', error '0.0000000'

Test #17:

score: 0
Accepted
time: 1851ms
memory: 4516kb

input:

-6880 -3012 949 2588
2000
56 -2490
59 -8874
-90 7871
-48 9340
-29 -4546
72 1776
-22 -8437
-7 5228
6 -2206
89 -5714
71 -6149
44 8645
-17 -8800
19 -8446
-31 -1438
58 4422
-10 -6275
98 -7180
21 -3721
14 3061
-60 -2084
45 4628
-57 -7683
-19 -5389
97 4046
58 5141
-44 288
49 -3579
-39 -7224
94 5901
-68 -3...

output:

411858700.04329921870

result:

ok found '411858700.0432992', expected '411858700.0432993', error '0.0000000'

Test #18:

score: 0
Accepted
time: 1915ms
memory: 4524kb

input:

2772 -6314 4903 4834
2000
-9330 45
1739 56
1062 -58
6549 -25
2178 88
-6106 -87
-6078 -75
-9429 58
2648 -27
-9516 52
9061 -9
-1775 -3
-6885 74
-4346 27
-1758 -95
-9196 87
-752 -98
1724 -24
825 8
-2431 18
-360 14
1472 52
8871 -71
7205 -39
-8033 -28
8724 8
-5197 -52
9320 -2
2849 -64
-968 -77
9867 100
3...

output:

605362233.75295622071

result:

ok found '605362233.7529563', expected '605362233.7529563', error '0.0000000'

Test #19:

score: 0
Accepted
time: 1929ms
memory: 4600kb

input:

-10000 -10000 10000 10000
2000
8592 4096
9271 1216
8596 5077
9077 1756
9059 3053
8744 4685
8509 4543
7828 4581
8975 2478
9394 2850
9194 3045
9532 1437
9290 1261
8175 4923
8485 4507
8166 4987
8578 4973
9548 2129
9018 3543
8136 5431
8830 2783
9636 2605
8589 2865
9617 1981
9427 1091
7817 5017
9129 1790...

output:

238108908.61757980040

result:

ok found '238108908.6175798', expected '238108908.6175798', error '0.0000000'

Test #20:

score: 0
Accepted
time: 1923ms
memory: 4596kb

input:

-10000 -10000 10000 10000
2000
6262 7501
9152 454
8076 5537
5939 7930
9638 2163
8615 4078
9554 1084
4352 8207
9578 1188
9456 406
8908 3352
5449 7414
8782 3668
8621 4472
9319 957
6598 6780
8818 2341
6747 7300
9941 555
7653 6219
9183 342
7768 5183
8604 4366
3084 8703
7005 6054
7108 6347
9604 498
9180 ...

output:

397620990.08414204611

result:

ok found '397620990.0841420', expected '397620990.0841421', error '0.0000000'

Test #21:

score: 0
Accepted
time: 1949ms
memory: 4528kb

input:

-10000 -10000 10000 10000
2000
1066 9157
9386 1781
6605 7086
2309 8912
9690 2029
7780 6101
-590 9528
9389 1295
7597 5489
9036 4111
6848 6367
5728 7783
8672 4455
7349 5754
9546 1194
391 9337
7748 5828
4912 8500
3010 8983
9877 1235
6371 6950
8942 4055
2111 9469
703 9760
7671 5156
7290 5623
-135 9974
8...

output:

554491808.93941583921

result:

ok found '554491808.9394158', expected '554491808.9394159', error '0.0000000'

Test #22:

score: 0
Accepted
time: 1899ms
memory: 4584kb

input:

-10000 -10000 10000 10000
2000
9179 3249
-7440 6141
1589 9872
-7325 6455
5681 8184
-5197 8181
-4609 8595
8619 4125
6442 6792
-3591 8889
9340 1215
4556 8497
8772 4168
-7033 6910
-6024 7886
9454 1423
2080 9352
799 9732
-1392 9561
-1456 9358
9027 2880
8692 3510
7747 6163
-4921 8380
9405 1846
9325 1029
...

output:

689400531.77838504093

result:

ok found '689400531.7783850', expected '689400531.7783850', error '0.0000000'

Test #23:

score: 0
Accepted
time: 1910ms
memory: 4572kb

input:

-10000 -10000 10000 10000
2000
-413 9522
8730 4470
3507 9168
5383 8069
8670 4427
-9308 3173
7997 5312
4959 8042
9698 943
7838 5266
-1664 9690
-8665 4435
-7997 5929
-8004 5304
6458 7586
1075 9349
-9665 1477
-9045 3807
-2560 9625
-9175 3732
-2041 9416
4209 8993
-4289 8826
-9394 2481
9442 2659
9358 241...

output:

801988277.64484838996

result:

ok found '801988277.6448483', expected '801988277.6448485', error '0.0000000'

Test #24:

score: 0
Accepted
time: 1902ms
memory: 4600kb

input:

-10000 -10000 10000 10000
2000
-8928 -3936
-6761 7287
-9682 -71
-8639 -3984
-9595 2735
293 9693
2163 9632
-8395 5266
69 9738
-7522 6527
-9270 -2254
1248 9688
-9575 -961
9627 1763
-9052 3587
-7114 6320
1541 9699
9483 1490
9715 929
9537 2145
9232 2774
-8662 4803
-2298 9383
-3408 8923
7113 6554
3071 91...

output:

876785969.03840655740

result:

ok found '876785969.0384066', expected '876785969.0384066', error '0.0000000'

Test #25:

score: 0
Accepted
time: 1894ms
memory: 4540kb

input:

-10000 -10000 10000 10000
2000
-9635 -653
-8720 -4280
-5995 7913
-9350 -2497
-5442 8109
-8247 -5020
-9214 3473
-9607 719
-9089 -3142
-9469 -1962
-9849 -106
9096 3352
-4680 -8597
9250 3140
9456 1742
-3524 8952
6527 7385
-1748 9791
-7220 -6715
9498 2723
4248 8776
-2148 9563
-8946 3525
-8594 -4460
-310...

output:

917958796.41764157137

result:

ok found '917958796.4176415', expected '917958796.4176416', error '0.0000000'

Test #26:

score: 0
Accepted
time: 1905ms
memory: 4592kb

input:

-10000 -10000 10000 10000
2000
-8424 4882
9874 1054
-7516 6283
5824 7919
-9492 2869
-8465 -5065
-7677 6023
9658 1194
-9032 -4038
-1597 9671
-6382 -7575
-7148 6793
-4487 8777
-4574 -8576
5921 7980
-7095 6804
9757 1960
-446 9756
9784 1908
2863 -9539
-860 9863
-9683 1374
-7696 6223
-8488 5254
-9338 262...

output:

949084958.81866029772

result:

ok found '949084958.8186603', expected '949084958.8186604', error '0.0000000'

Test #27:

score: 0
Accepted
time: 1903ms
memory: 4540kb

input:

-10000 -10000 10000 10000
2000
4185 -8886
7933 -5859
-9624 1869
5116 8492
7405 6679
-5390 8255
3698 -9149
-3048 -9443
-4420 8767
4593 8716
-186 9893
-654 9837
6586 7495
4835 8649
-6838 7288
-9548 2300
9526 2926
2929 9402
3564 9256
5371 8359
-9883 306
-9009 -4168
-6262 -7699
-7990 -5794
8096 5562
391...

output:

962273357.46533455787

result:

ok found '962273357.4653345', expected '962273357.4653347', error '0.0000000'

Test #28:

score: 0
Accepted
time: 1883ms
memory: 4596kb

input:

-10000 -10000 10000 10000
2000
-9661 -2487
-3295 -9339
6986 -7122
1152 9901
-7469 6523
-8947 4408
9954 641
-9417 -3097
-4042 9040
3350 9383
1721 -9757
5006 8565
-3414 9369
7563 6502
3795 -9153
7684 6358
2612 -9594
-2043 -9715
9761 -1880
-5955 -8019
-181 9958
8931 4398
-9859 -1329
-5689 8176
-7462 65...

output:

962638552.46351120283

result:

ok found '962638552.4635112', expected '962638552.4635112', error '0.0000000'

Test #29:

score: 0
Accepted
time: 1880ms
memory: 4640kb

input:

-10000 -10000 10000 10000
2000
8501 5255
-8375 5447
-35 -9991
1854 9816
9333 3581
8958 -4423
-6372 -7702
-293 9993
-1478 -9890
-8828 4676
1480 9885
-9766 -2134
-8209 5701
-8515 5226
-9521 -3051
-9975 -587
-6593 7507
2775 9596
-6945 7186
-368 9993
-4697 -8821
-9977 633
-8 9993
-7503 -6601
7996 5999
-...

output:

961606219.67529074848

result:

ok found '961606219.6752907', expected '961606219.6752908', error '0.0000000'

Test #30:

score: 0
Accepted
time: 1875ms
memory: 4576kb

input:

-10000 -10000 10000 10000
2000
-4177 9085
709 -9974
-9702 2419
-9989 -450
-670 -9977
-8072 5901
-7972 -6036
8638 -5038
-9624 -2714
-9108 4127
6539 -7565
5370 -8435
8466 -5320
-6576 -7533
9035 4285
-5956 -8032
9068 -4215
4025 -9154
5545 8321
7320 -6812
-2950 -9554
8695 4939
9065 4221
3229 9464
-9897 ...

output:

961547221.20827051200

result:

ok found '961547221.2082705', expected '961547221.2082705', error '0.0000000'

Test #31:

score: 0
Accepted
time: 42ms
memory: 4148kb

input:

-10000 -10000 10000 10000
256
5008 -4851
-4668 -5179
-2736 6413
5139 -4712
-2803 6384
1723 6756
-1659 -6772
6259 3072
-5832 -3821
4028 -5691
-6651 -2092
-5179 -4668
6899 1008
-5691 4028
-2317 -6576
-5179 4668
6952 531
6948 581
6789 1588
5691 -4028
-1723 6756
-1659 6772
-2136 -6637
-6576 2317
4596 52...

output:

670393490.38195448578

result:

ok found '670393490.3819544', expected '670393490.3819546', error '0.0000000'

Test #32:

score: 0
Accepted
time: 51ms
memory: 4216kb

input:

-10000 -10000 10000 10000
288
-456 -8767
6240 6175
-2600 -8385
-4796 -7353
-8740 825
-8511 -2152
575 8760
5716 -6663
-6625 -5760
-5148 -7111
-8200 3135
-6864 5473
8200 -3135
-3300 8135
8000 3615
5057 7176
-8697 1196
-4231 7692
3615 8000
-2951 -8268
2017 -8544
8200 3135
-6663 -5716
-6240 -6175
2241 8...

output:

844114805.06146862742

result:

ok found '844114805.0614686', expected '844114805.0614687', error '0.0000000'

Test #33:

score: 0
Accepted
time: 41ms
memory: 4188kb

input:

-10000 -10000 10000 10000
256
-2750 9655
-6074 7993
6970 7225
6922 -7271
-9847 -1954
6358 -7769
8030 6025
-9970 1175
-8030 6025
9050 4345
2686 -9673
6439 -7702
-9095 4250
5591 8338
9970 1175
1175 9970
5783 -8206
2750 9655
-4726 -8857
9638 -2809
-7702 -6439
9977 1114
-5095 -8650
3863 -9266
5042 -8681...

output:

965086521.74051891477

result:

ok found '965086521.7405189', expected '965086521.7405190', error '0.0000000'

Test #34:

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

input:

-10000 -10000 10000 10000
72
-9765 -7270
9547 7554
7270 -9765
-9083 -8106
9083 8106
9547 -7554
8070 -9115
-7050 9925
-8427 8786
7050 -9925
-7050 -9925
8427 -8786
-9030 8165
-8427 -8786
-9450 7675
8165 9030
9450 7675
-7554 9547
-9925 -7050
7675 9450
-7270 9765
-9115 -8070
9450 -7675
8485 -8730
9115 -...

output:

1128792509.41755811649

result:

ok found '1128792509.4175582', expected '1128792509.4175582', error '0.0000000'

Test #35:

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

input:

-10000 -10000 10000 10000
32
-9272 9271
9272 9271
9272 -9271
9599 8932
-9712 8809
-8809 -9712
8932 -9599
-8932 9599
8809 9712
9271 9272
8831 -9692
-9692 -8831
8809 -9712
-9271 9272
-9271 -9272
9271 -9272
-9712 -8809
-8831 -9692
-9599 8932
8831 9692
-9599 -8932
-8932 -9599
-8831 9692
9692 -8831
-8809...

output:

1182673090.41968799313

result:

ok found '1182673090.4196880', expected '1182673090.4196880', error '0.0000000'

Test #36:

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

input:

-10000 -10000 10000 10000
80
235 2730
-1221 5278
-1925 7550
-325 3550
8886 -2123
-1355 5610
-1595 6290
1894 917
-2170 9685
2446 453
-550 3925
-1158 5131
885 1930
-1829 7122
-2165 9530
2325 550
3925 -550
5610 -1355
8965 -2130
-1502 6011
3995 -590
-2026 8107
75 2950
-1190 5205
-1410 5755
917 1894
9530...

output:

657040895.88731241331

result:

ok found '657040895.8873124', expected '657040895.8873124', error '0.0000000'

Test #37:

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

input:

-10000 -10000 10000 10000
96
-5571 9222
6051 -5082
-1885 -90
4835 -4710
1373 -2986
1802 -3261
5715 -4990
2157 -3474
554 -2403
1085 -2790
2765 -3810
-3474 2157
9222 -5571
3293 -4074
9885 -5590
-1789 -202
-4867 5306
-4515 4310
9059 -5562
-4710 4835
-90 -1885
-5166 6387
-5581 9458
7502 -5389
-835 -1210...

output:

836413049.37692464516

result:

ok found '836413049.3769246', expected '836413049.3769248', error '0.0000000'

Test #38:

score: 0
Accepted
time: 6ms
memory: 4112kb

input:

-10000 -10000 10000 10000
96
6815 -9370
-9201 5918
705 -7290
-9502 7761
-9042 5231
321 -7078
-3265 -4470
-6154 -1153
-7078 321
2510 -8145
2390 -8095
-6879 -22
-4870 -2815
-8898 4689
-4735 -2970
-5665 -1830
-4170 -3585
4689 -8898
-177 -6786
-6081 -1258
-9294 6383
-2815 -4870
-3585 -4170
-6198 -1089
9...

output:

1059819845.87405370304

result:

ok found '1059819845.8740537', expected '1059819845.8740538', error '0.0000000'

Test #39:

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

input:

-10000 -10000 10000 10000
38
-6467 -5256
-9635 -880
-3179 -8172
-2444 -8683
-6992 -4669
-5155 -6560
-1085 -9520
-1316 -9387
-8765 -2320
-9520 -1085
-4163 -7416
-5256 -6467
-3940 -7595
-1781 -9108
-6660 -5045
-7416 -4163
-880 -9635
-7740 -3755
-2988 -8309
-9387 -1316
-5740 -6005
-8309 -2988
-9108 -17...

output:

401223489.83345463732

result:

ok found '401223489.8334546', expected '401223489.8334547', error '0.0000000'

Test #40:

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

input:

-10000 -10000 10000 10000
16
-8681 -6822
-6822 -8681
-6998 -8521
-7191 -8342
-9794 -5497
-8521 -6998
-5497 -9794
-7558 -7991
-9578 -5769
-9682 -5639
-8999 -6462
-6462 -8999
-8342 -7191
-5639 -9682
-5769 -9578
-7991 -7558

output:

181599089.45246997087

result:

ok found '181599089.4524700', expected '181599089.4524700', error '0.0000000'

Test #41:

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

input:

-10000 -10000 10000 10000
10
-9880 -6785
-7472 -9279
-7079 -9628
-7225 -9500
-7775 -9000
-9500 -7225
-9628 -7079
-9279 -7472
-6785 -9880
-9000 -7775

output:

130181610.02564660460

result:

ok found '130181610.0256466', expected '130181610.0256466', error '0.0000000'

Test #42:

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

input:

-10000 -10000 10000 10000
4
-9480 -9015
-9900 -8575
-8575 -9900
-9015 -9480

output:

55539550.12437227800

result:

ok found '55539550.1243723', expected '55539550.1243723', error '0.0000000'

Test #43:

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

input:

-10000 -10000 10000 10000
4
-10000 -10000
10000 -10000
-10000 10000
10000 10000

output:

1256637061.43591719086

result:

ok found '1256637061.4359171', expected '1256637061.4359174', error '0.0000000'

Test #44:

score: 0
Accepted
time: 1611ms
memory: 4508kb

input:

-10000 -10000 10000 10000
2000
2044 2044
-8714 -8714
-918 -918
2587 2587
-6059 -6059
5193 5193
-9894 -9894
-4609 -4609
55 55
2687 2687
3106 3106
8183 8183
2735 2735
-2950 -2950
579 579
-1338 -1338
-6756 -6756
42 42
-169 -169
9040 9040
-9228 -9228
-4915 -4915
-3211 -3211
7013 7013
4183 4183
5113 5113...

output:

1151330698.42148756131

result:

ok found '1151330698.4214876', expected '1151330698.4214876', error '0.0000000'

Test #45:

score: 0
Accepted
time: 1601ms
memory: 4596kb

input:

-10000 -10000 10000 10000
2000
-6538 -6538
5148 5148
9850 9850
7282 7282
-2282 -2282
-5028 -5028
4922 4922
9956 9956
5469 5469
2292 2292
-6534 -6534
7401 7401
4104 4104
8427 8427
-6193 -6193
-9024 -9024
7928 7928
-2241 -2241
8125 8125
-4976 -4976
-3666 -3666
5405 5405
-5271 -5271
-9353 -9353
-8746 -...

output:

1148135739.93334824569

result:

ok found '1148135739.9333482', expected '1148135739.9333484', error '0.0000000'

Test #46:

score: 0
Accepted
time: 1617ms
memory: 4596kb

input:

-10000 -10000 10000 10000
2000
9476 9476
-9869 -9869
8080 8080
8383 8383
9669 9669
-8486 -8486
8674 8674
-9236 -9236
8525 8525
9227 9227
-8259 -8259
-9401 -9401
-9303 -9303
8737 8737
-9672 -9672
-8361 -8361
-8521 -8521
-9700 -9700
-9360 -9360
-9854 -9854
-8582 -8582
-9997 -9997
8518 8518
-9861 -9861...

output:

980285475.08093034721

result:

ok found '980285475.0809304', expected '980285475.0809305', error '0.0000000'

Test #47:

score: 0
Accepted
time: 1634ms
memory: 4544kb

input:

-10000 -10000 10000 10000
2000
-1646 -1646
742 742
1462 1462
657 657
-1336 -1336
622 622
-1498 -1498
-1007 -1007
1219 1219
260 260
1951 1951
-1476 -1476
713 713
878 878
403 403
1542 1542
1878 1878
-1959 -1959
244 244
384 384
-1830 -1830
-1536 -1536
1554 1554
1423 1423
-1744 -1744
-1731 -1731
1117 11...

output:

170735086.16425889492

result:

ok found '170735086.1642589', expected '170735086.1642589', error '0.0000000'

Test #48:

score: 0
Accepted
time: 1636ms
memory: 4584kb

input:

-10000 -10000 10000 10000
2000
-4431 -4431
-790 -790
-7329 -7329
6810 6810
-489 -489
-6874 -6874
2089 2089
4399 4399
4905 4905
4808 4808
-4367 -4367
-675 -675
6348 6348
4880 4880
-4601 -4601
5023 5023
-4750 -4750
2922 2922
-3394 -3394
-4671 -4671
3330 3330
-6127 -6127
-6296 -6296
-6393 -6393
-5535 -...

output:

840638278.50862752710

result:

ok found '840638278.5086275', expected '840638278.5086277', error '0.0000000'

Test #49:

score: 0
Accepted
time: 1620ms
memory: 4600kb

input:

-10000 -10000 10000 10000
2000
-10000 10000
10000 -10000
498 498
-644 -644
-1202 -1202
617 617
524 524
1312 1312
1070 1070
-816 -816
756 756
-1934 -1934
1228 1228
-1336 -1336
-1066 -1066
705 705
-1446 -1446
1113 1113
-1038 -1038
-638 -638
1730 1730
282 282
1876 1876
-1613 -1613
158 158
162 162
1195 ...

output:

1156500882.99146245210

result:

ok found '1156500882.9914625', expected '1156500882.9914625', error '0.0000000'

Test #50:

score: 0
Accepted
time: 1592ms
memory: 4660kb

input:

-10000 -10000 10000 10000
2000
-10000 10000
10000 -10000
2590 2590
2306 2306
3693 3693
1106 1106
483 483
936 936
34 34
820 820
3274 3274
-2947 -2947
-2526 -2526
-2646 -2646
2223 2223
1411 1411
-2181 -2181
-1664 -1664
-1221 -1221
-2188 -2188
1581 1581
-3881 -3881
2733 2733
1613 1613
973 973
3437 3437...

output:

1185552635.41578819789

result:

ok found '1185552635.4157882', expected '1185552635.4157882', error '0.0000000'

Test #51:

score: 0
Accepted
time: 1904ms
memory: 4592kb

input:

-10000 -10000 10000 10000
2000
0 0
-8050 -5931
-6443 7646
-4197 -9076
-6478 -7617
-4838 -8751
552 -9984
-7429 6693
-1481 9889
-5775 -8163
203 -9997
9728 2314
-2339 -9722
-9615 2745
3530 9355
9951 987
3465 -9380
3565 9342
2032 9791
4728 8811
3982 -9172
-9375 -3478
71 9999
-9420 -3354
9588 -2838
9458 ...

output:

982102595.49437071575

result:

ok found '982102595.4943707', expected '982102595.4943708', error '0.0000000'

Test #52:

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

input:

9999 9999 10000 10000
2
-10000 10000
10000 -10000

output:

41887.90204986128

result:

ok found '41887.9020499', expected '41887.9020479', error '0.0000000'

Extra Test:

score: 0
Extra Test Passed