QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#66189 | #4886. Best Sun | japan022022 | AC ✓ | 1330ms | 10236kb | C++20 | 23.6kb | 2022-12-07 23:32:45 | 2022-12-07 23:32:48 |
Judging History
answer
#line 1 "library/my_template.hpp"
#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 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__))))
// 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 FOR4_R(i, a, b, c) for (ll i = (b)-1; i >= ll(a); i -= (c))
#define overload4(a, b, c, d, e, ...) e
#define FOR(...) overload4(__VA_ARGS__, FOR4, FOR3, FOR2, FOR1)(__VA_ARGS__)
#define FOR_R(...) \
overload4(__VA_ARGS__, FOR4_R, 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
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()
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>
T pick(deque<T> &que) {
T a = que.front();
que.pop_front();
return a;
}
template <typename T>
T pick(pq<T> &que) {
T a = que.top();
que.pop();
return a;
}
template <typename T>
T pick(pqg<T> &que) {
assert(que.size());
T a = que.top();
que.pop();
return a;
}
template <typename T>
T pick(vc<T> &que) {
assert(que.size());
T a = que.back();
que.pop_back();
return a;
}
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 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);
}
vc<int> s_to_vi(const string &S, char first_char) {
vc<int> A(S.size());
FOR(i, S.size()) { A[i] = S[i] - first_char; }
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;
}
template <typename CNT, typename T>
vc<CNT> bincount(const vc<T> &A, int size) {
vc<CNT> C(size);
for (auto &&x: A) { ++C[x]; }
return C;
}
// stable
template <typename T>
vector<int> argsort(const vector<T> &A) {
vector<int> ids(A.size());
iota(all(ids), 0);
sort(all(ids),
[&](int i, int j) { return A[i] < A[j] || (A[i] == A[j] && i < j); });
return ids;
}
// A[I[0]], A[I[1]], ...
template <typename T>
vc<T> rearrange(const vc<T> &A, const vc<int> &I) {
int n = len(I);
vc<T> B(n);
FOR(i, n) B[i] = A[I[i]];
return B;
}
#line 1 "library/other/io.hpp"
// based on yosupo's fastio
#include <unistd.h>
namespace 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/geo/count_points_in_triangles.hpp"
#line 2 "library/geo/angle_sort.hpp"
#line 2 "library/geo/base.hpp"
template <typename T>
struct Point {
T x, y;
Point() = default;
template <typename A, typename B>
Point(A x, B y) : x(x), y(y) {}
template <typename A, typename B>
Point(pair<A, B> p) : x(p.fi), y(p.se) {}
Point operator+(Point p) const { return {x + p.x, y + p.y}; }
Point operator-(Point p) const { return {x - p.x, y - p.y}; }
bool operator==(Point p) const { return x == p.x && y == p.y; }
Point operator-() const { return {-x, -y}; }
bool operator<(Point p) const {
if (x != p.x) return x < p.x;
return y < p.y;
}
T dot(Point other) { return x * other.x + y * other.y; }
T det(Point other) { return x * other.y - y * other.x; }
void read() { fastio::read(x), fastio::read(y); }
void write() { fastio::printer.write(pair<T, T>({x, y})); }
};
template <typename REAL, typename T>
REAL dist(Point<T> A, Point<T> B) {
A = A - B;
T p = A.dot(A);
return sqrt(REAL(p));
}
template <typename T>
struct Line {
T a, b, c;
Line(T a, T b, T c) : a(a), b(b), c(c) {}
Line(Point<T> A, Point<T> B) {
a = A.y - B.y;
b = B.x - A.x;
c = A.x * B.y - A.y * B.x;
}
Line(T x1, T y1, T x2, T y2) : Line(Point<T>(x1, y1), Point<T>(x2, y2)) {}
template <typename U>
U eval(Point<U> P) {
return a * P.x + b * P.y + c;
}
template <typename U>
T eval(U x, U y) {
return a * x + b * y + c;
}
bool is_parallel(Line other) { return a * other.b - b * other.a == 0; }
bool is_orthogonal(Line other) { return a * other.a + b * other.b == 0; }
};
template <typename T>
struct Segment {
Point<T> A, B;
Segment(Point<T> A, Point<T> B) : A(A), B(B) {}
Segment(T x1, T y1, T x2, T y2)
: Segment(Point<T>(x1, y1), Point<T>(x2, y2)) {}
Line<T> to_Line() { return Line(A, B); }
};
template <typename T>
struct Circle {
Point<T> O;
T r;
Circle(Point<T> O, T r) : O(O), r(r) {}
Circle(T x, T y, T r) : O(Point<T>(x, y)), r(r) {}
};
template <typename T>
struct Polygon {
vc<Point<T>> points;
T a;
template <typename A, typename B>
Polygon(vc<pair<A, B>> pairs) {
for (auto&& [a, b]: pairs) points.eb(Point<T>(a, b));
build();
}
Polygon(vc<Point<T>> points) : points(points) { build(); }
int size() { return len(points); }
template <typename REAL>
REAL area() {
return a * 0.5;
}
template <enable_if_t<is_integral<T>::value, int> = 0>
T area_2() {
return a;
}
bool is_convex() {
FOR(j, len(points)) {
int i = (j == 0 ? len(points) - 1 : j - 1);
int k = (j == len(points) - 1 ? 0 : j + 1);
if ((points[j] - points[i]).det(points[k] - points[j]) < 0) return false;
}
return true;
}
private:
void build() {
a = 0;
FOR(i, len(points)) {
int j = (i + 1 == len(points) ? 0 : i + 1);
a += points[i].det(points[j]);
}
if (a < 0) {
a = -a;
reverse(all(points));
}
}
};
#line 4 "library/geo/angle_sort.hpp"
// 偏角ソートに対する argsort
template <typename T>
vector<int> angle_argsort(vector<Point<T>>& P) {
vector<int> lower, origin, upper;
const Point<T> O = {0, 0};
FOR(i, len(P)) {
if (P[i] == O) origin.eb(i);
elif ((P[i].y < 0) || (P[i].y == 0 && P[i].x > 0)) lower.eb(i);
else upper.eb(i);
}
sort(all(lower), [&](auto& i, auto& j) { return P[i].det(P[j]) > 0; });
sort(all(upper), [&](auto& i, auto& j) { return P[i].det(P[j]) > 0; });
auto& I = lower;
I.insert(I.end(), all(origin));
I.insert(I.end(), all(upper));
return I;
}
// 偏角ソートに対する argsort
template <typename T>
vector<int> angle_argsort(vector<pair<T, T>>& P) {
vc<Point<T>> tmp(len(P));
FOR(i, len(P)) tmp[i] = Point<T>(P[i]);
return angle_argsort<T>(tmp);
}
// inplace に偏角ソートする
// index が欲しい場合は angle_argsort
template <typename T>
void angle_sort(vector<Point<T>>& P) {
auto I = angle_argsort<T>(P);
P = rearrange(P, I);
}
// inplace に偏角ソートする
// index が欲しい場合は angle_argsort
template <typename T>
void angle_sort(vector<pair<T, T>>& P) {
auto I = angle_argsort<T>(P);
P = rearrange(P, I);
}
#line 2 "library/random/base.hpp"
u64 RNG_64() {
static uint64_t x_
= uint64_t(chrono::duration_cast<chrono::nanoseconds>(
chrono::high_resolution_clock::now().time_since_epoch())
.count())
* 10150724397891781847ULL;
x_ ^= x_ << 7;
return x_ ^= x_ >> 9;
}
u64 RNG(u64 lim) { return RNG_64() % lim; }
ll RNG(ll l, ll r) { return l + RNG_64() % (r - l); }
#line 5 "library/geo/count_points_in_triangles.hpp"
// 点群 A, B を入力 (Point<ll>)
// query(i,j,k):三角形 AiAjAk 内部の Bl の個数(非負)を返す
// 前計算 O(N^2M)、クエリ O(1)
struct Count_Points_In_Triangles {
using P = Point<ll>;
const int LIM = 1'000'000'000 + 10;
vc<P> A, B;
vc<int> I, rk; // O から見た偏角ソート順を管理
vc<int> point; // A[i] と一致する B[j] の数え上げ
vvc<int> seg; // 線分 A[i]A[j] 内にある B[k] の数え上げ
vvc<int> tri; // OA[i]A[j] 内部にある B[k] の数え上げ
Count_Points_In_Triangles(vc<P> A, vc<P> B) : A(A), B(B) {
for (auto&& p: A) assert(-LIM < min(p.x, p.y) && max(p.x, p.y) < LIM);
for (auto&& p: B) assert(-LIM < min(p.x, p.y) && max(p.x, p.y) < LIM);
build();
}
int query(int i, int j, int k) {
i = rk[i], j = rk[j], k = rk[k];
if (i > j) swap(i, j);
if (j > k) swap(j, k);
if (i > j) swap(i, j);
assert(i <= j && j <= k);
ll d = (A[j] - A[i]).det(A[k] - A[i]);
if (d == 0) return 0;
if (d > 0) { return tri[i][j] + tri[j][k] - tri[i][k] - seg[i][k]; }
int x = tri[i][k] - tri[i][j] - tri[j][k];
return x - seg[i][j] - seg[j][k] - point[j];
}
private:
P take_origin() {
int N = len(A), M = len(B);
while (1) {
P O = P{-LIM, RNG(-LIM, LIM)};
bool ok = 1;
FOR(i, N) FOR(j, N) {
if (A[i] == A[j]) continue;
if ((A[i] - O).det(A[j] - O) == 0) ok = 0;
}
FOR(i, N) FOR(j, M) {
if (A[i] == B[j]) continue;
if ((A[i] - O).det(B[j] - O) == 0) ok = 0;
}
if (ok) return O;
}
return P{};
}
void build() {
P O = take_origin();
for (auto&& p: A) p = p - O;
for (auto&& p: B) p = p - O;
int N = len(A), M = len(B);
I.resize(N), rk.resize(N);
iota(all(I), 0);
sort(all(I), [&](auto& a, auto& b) -> bool { return A[a].det(A[b]) > 0; });
FOR(i, N) rk[I[i]] = i;
A = rearrange(A, I);
point.assign(N, 0);
seg.assign(N, vc<int>(N));
tri.assign(N, vc<int>(N));
FOR(i, N) FOR(j, M) if (A[i] == B[j])++ point[i];
FOR(i, N) FOR(j, i + 1, N) {
FOR(k, M) {
if (A[i].det(B[k]) <= 0) continue;
if (A[j].det(B[k]) >= 0) continue;
ll d = (B[k] - A[i]).det(A[j] - A[i]);
if (d == 0) ++seg[i][j];
if (d < 0) ++tri[i][j];
}
}
}
};
#line 5 "main.cpp"
using Re = double;
using P = Point<ll>;
void solve() {
INT(N);
VEC(P, A, N);
Count_Points_In_Triangles CT(A, A);
// 線分 i->j を傾き順でソートする
vc<pair<int, int>> IJ;
{
vc<P> tmp;
FOR(i, N) FOR(j, N) tmp.eb(A[j] - A[i]);
auto I = angle_argsort(tmp);
for (auto&& k: I) {
auto [i, j] = divmod(k, N);
if (i != j) IJ.eb(i, j);
}
}
// i->j のときに足すべき面積
vv(Re, AREA, N, N);
FOR(i, N) FOR(j, N) AREA[i][j] = A[i].det(A[j]) * 0.5;
auto angle = [&](P p) -> Re {
int g = gcd(p.x, p.y);
if (g == 0) g = 1;
return atan2(p.y / g, p.x / g);
};
vv(Re, angle_0, N, N);
vv(Re, angle_90, N, N);
FOR(i, N) FOR(j, N) {
angle_0[i][j] = angle(A[j] - A[i]);
angle_90[i][j] = angle({-(A[j].y - A[i].y), +(A[j].x - A[i].x)});
}
// i->j のときに足すべき長さ。初手 / 途中 / 最後。
vvv(Re, LEN, 3, N, N);
FOR(i, N) FOR(j, N) {
// 自分自身
Re d = dist<Re>(A[i], A[j]);
LEN[0][i][j] += d;
LEN[1][i][j] += d;
LEN[2][i][j] += d;
}
// i->j のときに足すべき長さ、まず帯状領域のものについて
// 「ちょうど 90 度」はここに含めておく
FOR(i, N) FOR(j, N) if (i != j) {
FOR(k, N) {
if (k == i || k == j) continue;
if ((A[j] - A[i]).dot(A[k] - A[i]) < 0) continue;
if ((A[i] - A[j]).dot(A[k] - A[j]) < 0) continue;
if ((A[k] - A[i]).det(A[j] - A[i]) <= 0) continue;
Re d = min(dist<Re>(A[i], A[k]), dist<Re>(A[j], A[k]));
LEN[0][i][j] += d;
LEN[1][i][j] += d;
LEN[2][i][j] += d;
}
FOR(k, N) {
// if (k == i || k == j) continue;
// -180 < ik + 90 < ij のときに、LEN0 に +
// -180 < jk + 90 <= ij のときに、LEN1 に -
// ik + 90 <= ij のときに、LEN1 に +
// ij < jk+90 <= 180 のときに、LEN2 に +
Re IJ = angle_0[i][j];
Re IK = angle_90[i][k];
Re JK = angle_90[j][k];
Re di = dist<Re>(A[i], A[k]);
Re dj = dist<Re>(A[j], A[k]);
if (IK < IJ) LEN[0][i][j] += di;
if (JK <= IJ) LEN[0][i][j] -= dj, LEN[1][i][j] -= dj;
if (IK < IJ) LEN[1][i][j] += di, LEN[2][i][j] += di;
if (IJ < JK) LEN[2][i][j] += dj;
}
}
Re ANS = 0;
Re eps = 1e-9;
auto check = [&](const int s, Re w) -> bool {
// s からはじめて、S - wP > 0 を達成できるか?
const ll INF = 1LL << 60;
vc<Re> dp(N, -INF);
dp[s] = 0.0;
for (auto&& [i, j]: IJ) {
if (dp[i] == -INF) continue;
if (CT.query(s, i, j) > 0) continue;
if (i == s) { chmax(dp[j], dp[i] + AREA[i][j] - w * LEN[0][i][j]); }
elif (j == s) { chmax(dp[j], dp[i] + AREA[i][j] - w * LEN[2][i][j]); }
elif (i != s && j != s) {
chmax(dp[j], dp[i] + AREA[i][j] - w * LEN[1][i][j]);
}
}
return dp[s] > eps;
};
vc<bool> done(N);
FOR(N) {
int s = [&]() {
while (1) {
int s = RNG(0, N);
if (done[s]) continue;
return s;
}
return -1;
}();
done[s] = 1;
if (!check(s, ANS + eps)) continue;
Re lo = ANS + eps, hi = 4e12;
FOR(80) {
Re mi = (lo + hi) / 2;
bool ok = check(s, mi);
if (ok) lo = mi;
if (!ok) hi = mi;
}
ANS = lo;
}
print(ANS);
}
signed main() {
INT(T);
FOR(T) solve();
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 3ms
memory: 4096kb
input:
4 3 -1 -1 1 -1 0 1 4 0 0 10 0 0 10 8 1 5 2 0 -2 0 1 1 -1 1 0 3 8 4 4 -4 4 4 -4 -4 -4 5 6 -6 5 -5 -6 6 -5
output:
0.309016994217240 1.236861427677652 0.271137541412933 1.563100209466980
result:
ok 4 numbers
Test #2:
score: 0
Accepted
time: 118ms
memory: 4140kb
input:
10000 3 702262 828158 -350821 -420883 -466450 13507 3 28647 -193498 126436 -864937 -287798 738936 3 270358 -269567 745815 -485408 834083 677952 3 -2036 -403634 742978 -263774 975937 -609237 3 584248 -472620 482016 -356760 284902 903881 3 -292004 504925 -935756 373793 -781101 -434659 3 -858513 684433...
output:
85789.087398353542085 18268.519361672089872 102489.988390262238681 66685.754428080181242 18674.657937414340267 106468.965131972145173 14427.024651071094922 29966.245302542913123 143547.751083587383619 13097.175688126128080 162410.168316980794771 72070.932417874690145 29369.992627886884293 52867.2944...
result:
ok 10000 numbers
Test #3:
score: 0
Accepted
time: 103ms
memory: 4144kb
input:
10000 3 2 2 2 -2 -5 -5 3 -3 5 5 -4 2 -2 3 -4 1 2 -2 -4 4 3 1 -4 2 1 -4 1 3 2 1 -1 1 -3 3 3 4 5 3 -1 -3 -3 3 1 5 5 0 5 -1 3 2 -3 -5 -3 5 3 3 -4 4 0 -5 5 4 3 2 -3 5 0 2 -5 3 -2 -3 5 -3 5 4 3 -1 4 4 4 4 3 3 5 3 -1 4 2 -1 3 2 -3 4 3 -4 3 3 0 4 -2 -2 -1 -3 3 -2 0 -4 -2 4 2 3 -3 -1 3 1 1 -3 3 2 -5 2 3 -4 ...
output:
0.650700701070052 0.226809070244137 0.494682566160728 0.825532631204007 0.267532474626131 0.737928456332666 0.136852946647847 0.827745795519459 1.389628120365936 0.248476166361209 1.025126265805109 0.225245121511036 0.798168850416742 1.052177633726446 0.270090756669430 0.221028003503229 0.6549291473...
result:
ok 10000 numbers
Test #4:
score: 0
Accepted
time: 137ms
memory: 4144kb
input:
5625 4 -405394 -381883 602267 -335687 -620806 984110 271283 531233 4 196903 -993060 290851 358123 -890076 -717709 -681138 209884 4 -849589 607722 -21517 -586295 208561 -220953 924518 622983 4 -832186 456270 289934 43656 636006 339718 188963 113907 4 -305762 -872205 -520125 368722 -774548 984204 4245...
output:
232625.004274430393707 268175.826985963911284 159589.323630517290439 60440.753042598487809 133893.123436351859709 63201.990748626820277 167697.663406134757679 129470.013284316300997 126903.854072810136131 106643.971263097046176 131692.311227904719999 100421.055016212529154 148490.274817902391078 688...
result:
ok 5625 numbers
Test #5:
score: 0
Accepted
time: 120ms
memory: 4144kb
input:
5625 4 -2 -1 4 -5 -2 -4 -4 -4 4 -1 -5 4 4 2 -5 -5 1 4 -3 -4 -3 -1 -5 -1 4 -2 4 -2 4 -4 1 -1 -1 5 -4 4 -3 -5 -1 4 5 -1 3 5 4 -4 -2 1 4 -1 1 3 4 4 -5 3 -3 3 5 -4 -1 4 4 1 2 2 -5 1 0 0 -3 4 -5 -4 2 -3 5 3 -3 2 4 2 -2 -4 3 1 -4 -5 -5 4 -3 5 -2 4 1 3 1 -4 4 0 -5 5 -5 0 -2 -3 2 4 0 5 -1 -4 -2 0 4 -1 4 4 -...
output:
0.491968206772617 1.608023936285366 0.676463563481934 0.814682126414407 1.572795403267204 0.202044801584030 0.442367305765967 0.305583212279053 1.508906909893916 1.322787523736311 0.521855949155711 0.398280450231770 1.219494625779189 1.177491255269510 1.395102692973639 1.073773125970274 0.7540897904...
result:
ok 5625 numbers
Test #6:
score: 0
Accepted
time: 140ms
memory: 4232kb
input:
3600 5 114127 146710 467065 -311758 189643 449065 -303893 -215009 -789281 -140748 5 -449893 654165 -899120 -560520 719351 652759 285007 471281 987628 -767128 5 -587522 89736 -355416 -178001 801765 512722 314119 -136906 350051 762194 5 85697 920768 161507 -533920 -536515 401333 -27632 -987465 112237 ...
output:
84655.199548642136506 270848.726867046905681 202824.036734045512276 135615.191873947740532 119666.508543506162823 89811.870770703477319 254983.153575301344972 189662.747266510996269 64951.657089439395349 154748.442291013780050 214519.682079036196228 163467.532800249318825 278857.257440859044436 1914...
result:
ok 3600 numbers
Test #7:
score: 0
Accepted
time: 128ms
memory: 4080kb
input:
3600 5 2 6 -6 4 4 0 -5 0 3 1 5 0 3 5 -5 2 6 4 0 2 -4 5 2 -2 -6 -3 -5 -5 -1 3 -4 0 5 0 6 -3 -5 5 1 4 -3 -5 6 5 0 -6 -6 -5 -2 6 1 6 2 0 5 2 1 6 5 4 -1 -3 -2 -6 4 5 -1 -2 5 -6 -1 4 -2 3 6 4 5 -6 3 6 -5 4 -4 3 -1 2 -6 5 5 -4 1 -5 1 0 5 -1 3 2 5 -4 6 2 -4 1 -4 5 5 -1 6 5 -3 0 0 6 -2 5 -5 5 2 6 5 2 -1 -4 ...
output:
1.391733814355987 1.060007676049368 1.338660497136608 2.178641491271236 1.867763529512022 1.255064420023239 1.819705452321456 0.946302319143534 1.131643310431369 1.577239085895897 0.521212423100286 1.537179568006064 0.947338474588955 1.047090988085017 0.557229792968265 1.208597020252809 1.2302893723...
result:
ok 3600 numbers
Test #8:
score: 0
Accepted
time: 128ms
memory: 4140kb
input:
3600 5 -3 1 0 -1 2 -3 4 1 5 0 5 -3 -5 1 -5 -2 -2 3 2 1 5 5 -4 -2 4 5 5 3 2 -4 -4 0 5 0 4 -5 3 1 4 -1 1 4 1 5 5 -3 2 -5 -3 -4 -1 1 5 1 5 -5 5 -2 1 -3 2 2 2 -4 5 5 -2 -3 -1 3 1 1 3 -2 -2 -2 5 2 1 -2 -3 -3 -3 5 0 -5 4 5 2 2 -2 5 5 -1 4 -5 -2 4 5 -4 5 -1 -3 -2 5 5 -1 -4 3 5 -5 -4 -1 -3 0 -1 -5 1 -4 -3 5...
output:
0.543380852415187 1.207931264291538 1.575494574191271 0.807518149131863 1.556679601120978 0.682449066971565 0.907440119366982 0.950838997648517 0.853770882845183 1.371308224849629 0.742640802178514 0.401491624023423 0.747427628600871 0.493469159680949 0.711214495049007 0.609299855728647 1.2344361706...
result:
ok 3600 numbers
Test #9:
score: 0
Accepted
time: 132ms
memory: 4188kb
input:
3600 5 0 2 3 -7 7 3 -6 -1 6 -6 5 -3 6 -5 6 -10 -2 -4 -8 -9 8 5 -2 2 2 -9 6 -3 2 10 -5 7 5 -7 9 9 -4 -8 -2 4 10 9 -8 5 -8 -5 -10 0 -7 0 0 -7 6 8 5 10 -7 8 -8 3 1 0 -4 -7 -4 5 2 -9 -3 1 -4 -2 -3 -3 0 1 5 -8 5 -10 6 2 -8 6 -5 -6 8 5 5 8 -8 -9 3 -7 -9 0 -4 3 5 2 -5 2 0 6 7 10 5 -8 -6 5 -10 -2 7 -6 -10 5...
output:
2.105200917172043 1.536768657804009 1.607020250170385 3.526347323448325 1.978433495947679 1.082518584743352 0.946163226621754 1.602327122580950 2.883772155056276 0.940814876099139 1.701362563351727 1.600920246237998 1.933487252551775 0.691865963757284 1.833984299431383 0.630647968965431 3.4339518738...
result:
ok 3600 numbers
Test #10:
score: 0
Accepted
time: 163ms
memory: 4132kb
input:
900 10 -10 -1 8 -6 7 -1 -5 8 -7 -9 4 -2 -9 10 -10 -8 9 9 -3 -6 10 -5 9 -7 -1 -9 -7 -4 6 -5 2 1 -4 10 8 -9 -9 2 0 7 7 10 -3 -7 9 -4 -5 2 1 1 6 7 -4 7 4 -6 0 1 -8 -5 3 -5 10 -3 -10 -8 -7 -5 -5 -6 3 -3 -1 7 -9 1 -5 9 -7 -2 3 -4 9 10 0 1 -3 8 -3 7 4 -10 10 -6 -5 -8 10 4 4 3 0 -8 3 -10 10 4 -5 2 0 -5 -10...
output:
2.606027487290611 1.263341789414838 1.183899114986995 0.882728471599694 1.878227296467271 1.569813583596407 1.553295323553560 1.632832331019136 1.573799484590586 0.997095963137716 0.942482997228910 1.417282633762224 1.401766575030843 1.693986663663492 2.862877851455142 2.055359776998293 2.2087768678...
result:
ok 900 numbers
Test #11:
score: 0
Accepted
time: 178ms
memory: 4144kb
input:
900 10 670067 394291 -797310 -637136 -435933 -923795 120936 309795 -934569 -688829 950758 634654 983083 900196 174829 181896 -191047 177910 258020 672165 10 424046 -657491 391198 -14995 -302986 -597011 -96387 -486090 -164032 -356501 -891789 12548 -703186 -924511 808215 -212606 659523 490088 738901 5...
output:
81290.161838387415628 91483.733196163346292 100154.027055844286224 192606.414820315665565 177441.647434418933699 76150.892372178423102 177358.705373884906294 230115.879266813135473 280209.262845028191805 61218.543021288038290 137504.791637735906988 168344.544041083048796 162167.181814908981323 13310...
result:
ok 900 numbers
Test #12:
score: 0
Accepted
time: 211ms
memory: 4152kb
input:
225 20 -4 -9 -5 3 7 -10 10 7 2 7 1 4 2 2 -5 -1 -9 -1 -3 10 -8 -6 0 -5 7 -4 -6 -8 -7 -5 -1 -7 -1 -3 8 -6 6 3 8 2 20 8 2 6 -8 -3 -6 -2 9 5 -2 0 8 8 0 -7 -9 3 1 4 -10 4 7 -6 -1 -8 -7 2 -8 -8 -1 1 -9 2 -10 1 2 -7 8 -10 3 20 5 8 0 -3 9 -9 -10 -4 -10 -2 9 10 -2 8 -6 -10 6 -6 -3 7 5 10 7 7 -5 -6 -2 3 -4 0 ...
output:
0.612786987900611 1.113790722841807 0.761536436761093 1.330805908886374 0.754049224577117 1.332837977355108 0.670314798001541 1.035312805519955 0.906817408476034 0.976966662195355 0.750284896347126 0.778031577905510 0.717904921217012 0.571580229489961 0.772106110147612 0.769291031964331 1.8904459998...
result:
ok 225 numbers
Test #13:
score: 0
Accepted
time: 225ms
memory: 4172kb
input:
225 20 983700 -466859 -20884 -364855 807044 -308568 -785298 910840 -61173 -276993 -872226 -878552 -235162 831941 978289 938037 585612 -598517 545857 403231 -450887 -558997 -293044 -675226 -900628 102932 -836719 -530135 -534412 -681687 -487340 -227869 161252 -557533 397943 464720 170537 68556 413322 ...
output:
103902.052600549708586 185063.038457368122181 60443.657372329791542 118360.364609652649960 157018.785130765987560 103511.465806248714216 65549.699479301794781 67043.358828878874192 105010.270532679773169 93450.057668448440381 96005.228207606458454 54350.098601304707699 134718.535343140305486 98397.3...
result:
ok 225 numbers
Test #14:
score: 0
Accepted
time: 52ms
memory: 4208kb
input:
6 50 -107573 -479674 -523931 117259 705403 519626 -802569 -162243 510741 876735 206326 -333274 448335 -276206 482965 -837837 873180 -965235 -359525 608790 -53827 782310 689038 -718590 739597 111296 420387 -953079 -492679 -243600 -929509 1174 800731 -968797 208236 193620 249265 499134 848153 771472 5...
output:
20480.382854002993554 21190.022149754473503 27821.672595881223970 28113.319340533114882 27223.967607933398540 31857.835710023828142
result:
ok 6 numbers
Test #15:
score: 0
Accepted
time: 304ms
memory: 4276kb
input:
36 50 569818 -279771 972561 928848 383 744221 -453534 -154445 293032 502859 744851 436690 293077 503053 657 744258 317135 -276665 293067 502799 277103 -439313 282010 -387735 276848 -439025 972274 928763 -110443 -507380 744799 436605 282061 -387926 -453689 -154326 317468 -276534 -453630 -154510 28193...
output:
81019.427454406148172 77527.258772980290814 55029.246423312404659 42253.154385652291239 72715.857822992780712 197374.630740651191445 37469.722581922986137 66130.352995365421521 54454.597806512429088 125611.088368524026009 71800.206273050702293 87529.336768807683256 143932.887614790350199 95010.13468...
result:
ok 36 numbers
Test #16:
score: 0
Accepted
time: 323ms
memory: 4320kb
input:
36 50 -767165 583573 -284890 -681002 -423448 -259226 -285077 -680913 -921552 -557651 -767105 583853 -423314 -259380 790075 -225214 -921537 -557431 -767305 583770 -767124 583508 -921629 -557448 -423530 -259463 -284954 -680837 -423426 -259294 -423469 -259099 -767302 583744 -921772 -557672 -423503 -259...
output:
36643.605480613958207 73491.058057638088940 355454.440213160531130 76283.491515342233470 114070.220777055423241 102751.942339931905735 346834.508596233848948 142611.057937860634411 246800.067113918281393 131055.886666590740788 22279.887989220529562 215589.657625078805722 83424.868814161847695 51800....
result:
ok 36 numbers
Test #17:
score: 0
Accepted
time: 303ms
memory: 4276kb
input:
36 50 -757926 470127 -757550 470454 250422 -395772 250548 -395869 568164 -704082 250417 -396082 -757845 470427 444672 170989 250387 -395875 250484 -395866 568177 -704202 -757558 470484 250530 -395763 250488 -395883 -757754 470201 250529 -396062 -757760 470255 568050 -704413 444991 171218 444963 1710...
output:
41461.415731251188845 61470.345902095737983 198910.999967383337207 35019.368645437338273 139342.579707833327120 26339.662839055705263 247086.679248967819149 108103.832978620528593 269038.970057262980845 40491.226764097700652 99838.873958293886972 174035.149737151456065 172811.211970721051330 155604....
result:
ok 36 numbers
Test #18:
score: 0
Accepted
time: 393ms
memory: 4888kb
input:
9 100 -79487 826724 571284 354748 -312616 727781 -838024 249391 -79475 826592 796988 -514208 -847898 -839919 584481 896431 -847899 -839656 -312680 727782 22798 138363 466409 -215121 -36729 -925283 677267 -733543 -789119 581936 -789111 581860 271104 629366 571356 354824 -946155 -832752 571238 354954 ...
output:
23149.750594909019128 20131.169120866190497 50752.303675323906646 22743.251242484617251 21418.019942250455642 24609.132975065815117 20676.575270590536093 23043.755915184705373 35012.220302952257043
result:
ok 9 numbers
Test #19:
score: 0
Accepted
time: 2ms
memory: 4088kb
input:
1 10 2 -999 3 -998 4 -995 5 -990 6 -983 7 -974 8 -963 9 -950 1000 1000 -1000 1000
output:
293.827108693209198
result:
ok found '293.8271087', expected '293.8271087', error '0.0000000'
Test #20:
score: 0
Accepted
time: 882ms
memory: 10012kb
input:
1 300 -1000000 700000 -999999 697990 -999998 695960 -999997 693910 -999996 691840 -999995 689750 -999994 687640 -999993 685510 -999992 683360 -999991 681190 -999990 679000 -999989 676790 -999988 674560 -999987 672310 -999986 670040 -999985 667750 -999984 665440 -999983 663110 -999982 660760 -999981 ...
output:
46.717945371380537
result:
ok found '46.7179454', expected '46.7179454', error '0.0000000'
Test #21:
score: 0
Accepted
time: 927ms
memory: 9868kb
input:
1 300 -9999 -2 -9998 -3 -9995 -4 -9990 -5 -9983 -6 -9974 -7 -9963 -8 -9950 -9 -9935 -10 -9918 -11 -9899 -12 -9878 -13 -9855 -14 -9830 -15 -9803 -16 -9774 -17 -9743 -18 -9710 -19 -9675 -20 -9638 -21 -9599 -22 -9558 -23 -9515 -24 -9470 -25 -9423 -26 -9374 -27 -9323 -28 -9270 -29 -9215 -30 -9158 -31 -9...
output:
2367.692137978865503
result:
ok found '2367.6921380', expected '2367.6921380', error '0.0000000'
Test #22:
score: 0
Accepted
time: 966ms
memory: 10032kb
input:
1 300 700000 1000000 697990 999999 695960 999998 693910 999997 691840 999996 689750 999995 687640 999994 685510 999993 683360 999992 681190 999991 679000 999990 676790 999989 674560 999988 672310 999987 670040 999986 667750 999985 665440 999984 663110 999983 660760 999982 658390 999981 656000 999980...
output:
46.717945371380338
result:
ok found '46.7179454', expected '46.7179454', error '0.0000000'
Test #23:
score: 0
Accepted
time: 1142ms
memory: 10000kb
input:
1 300 -2 9999 -3 9998 -4 9995 -5 9990 -6 9983 -7 9974 -8 9963 -9 9950 -10 9935 -11 9918 -12 9899 -13 9878 -14 9855 -15 9830 -16 9803 -17 9774 -18 9743 -19 9710 -20 9675 -21 9638 -22 9599 -23 9558 -24 9515 -25 9470 -26 9423 -27 9374 -28 9323 -29 9270 -30 9215 -31 9158 -32 9099 -33 9038 -34 8975 -35 8...
output:
2367.692137979079234
result:
ok found '2367.6921380', expected '2367.6921380', error '0.0000000'
Test #24:
score: 0
Accepted
time: 892ms
memory: 9964kb
input:
1 300 1000000 -700000 999999 -697990 999998 -695960 999997 -693910 999996 -691840 999995 -689750 999994 -687640 999993 -685510 999992 -683360 999991 -681190 999990 -679000 999989 -676790 999988 -674560 999987 -672310 999986 -670040 999985 -667750 999984 -665440 999983 -663110 999982 -660760 999981 -...
output:
46.717945371380779
result:
ok found '46.7179454', expected '46.7179454', error '0.0000000'
Test #25:
score: 0
Accepted
time: 944ms
memory: 10096kb
input:
1 300 9999 2 9998 3 9995 4 9990 5 9983 6 9974 7 9963 8 9950 9 9935 10 9918 11 9899 12 9878 13 9855 14 9830 15 9803 16 9774 17 9743 18 9710 19 9675 20 9638 21 9599 22 9558 23 9515 24 9470 25 9423 26 9374 27 9323 28 9270 29 9215 30 9158 31 9099 32 9038 33 8975 34 8910 35 8843 36 8774 37 8703 38 8630 3...
output:
2367.692137978900519
result:
ok found '2367.6921380', expected '2367.6921380', error '0.0000000'
Test #26:
score: 0
Accepted
time: 787ms
memory: 9944kb
input:
1 300 -700000 -1000000 -697990 -999999 -695960 -999998 -693910 -999997 -691840 -999996 -689750 -999995 -687640 -999994 -685510 -999993 -683360 -999992 -681190 -999991 -679000 -999990 -676790 -999989 -674560 -999988 -672310 -999987 -670040 -999986 -667750 -999985 -665440 -999984 -663110 -999983 -6607...
output:
46.717945371381163
result:
ok found '46.7179454', expected '46.7179454', error '0.0000000'
Test #27:
score: 0
Accepted
time: 713ms
memory: 10136kb
input:
1 300 2 -999999 3 -999998 4 -999995 5 -999990 6 -999983 7 -999974 8 -999963 9 -999950 10 -999935 11 -999918 12 -999899 13 -999878 14 -999855 15 -999830 16 -999803 17 -999774 18 -999743 19 -999710 20 -999675 21 -999638 22 -999599 23 -999558 24 -999515 25 -999470 26 -999423 27 -999374 28 -999323 29 -9...
output:
24.916064111594000
result:
ok found '24.9160641', expected '24.9160641', error '0.0000000'
Test #28:
score: 0
Accepted
time: 520ms
memory: 10032kb
input:
1 300 2 -44999 3 -44998 4 -44995 5 -44990 6 -44983 7 -44974 8 -44963 9 -44950 10 -44935 11 -44918 12 -44899 13 -44878 14 -44855 15 -44830 16 -44803 17 -44774 18 -44743 19 -44710 20 -44675 21 -44638 22 -44599 23 -44558 24 -44515 25 -44470 26 -44423 27 -44374 28 -44323 29 -44270 30 -44215 31 -44158 32...
output:
479.302066069087687
result:
ok found '479.3020661', expected '479.3020661', error '0.0000000'
Test #29:
score: 0
Accepted
time: 890ms
memory: 9892kb
input:
1 300 2 -9999 3 -9998 4 -9995 5 -9990 6 -9983 7 -9974 8 -9963 9 -9950 10 -9935 11 -9918 12 -9899 13 -9878 14 -9855 15 -9830 16 -9803 17 -9774 18 -9743 19 -9710 20 -9675 21 -9638 22 -9599 23 -9558 24 -9515 25 -9470 26 -9423 27 -9374 28 -9323 29 -9270 30 -9215 31 -9158 32 -9099 33 -9038 34 -8975 35 -8...
output:
2367.692137978993742
result:
ok found '2367.6921380', expected '2367.6921380', error '0.0000000'
Test #30:
score: 0
Accepted
time: 660ms
memory: 10124kb
input:
1 300 2 -49999 3 -49998 4 -49995 5 -49990 6 -49983 7 -49974 8 -49963 9 -49950 10 -49935 11 -49918 12 -49899 13 -49878 14 -49855 15 -49830 16 -49803 17 -49774 18 -49743 19 -49710 20 -49675 21 -49638 22 -49599 23 -49558 24 -49515 25 -49470 26 -49423 27 -49374 28 -49323 29 -49270 30 -49215 31 -49158 32...
output:
7347.578773741046462
result:
ok found '7347.5787737', expected '7347.5787737', error '0.0000000'
Test #31:
score: 0
Accepted
time: 924ms
memory: 10120kb
input:
1 300 2 -99999 3 -99998 4 -99995 5 -99990 6 -99983 7 -99974 8 -99963 9 -99950 10 -99935 11 -99918 12 -99899 13 -99878 14 -99855 15 -99830 16 -99803 17 -99774 18 -99743 19 -99710 20 -99675 21 -99638 22 -99599 23 -99558 24 -99515 25 -99470 26 -99423 27 -99374 28 -99323 29 -99270 30 -99215 31 -99158 32...
output:
7264.823548689271774
result:
ok found '7264.8235487', expected '7264.8235487', error '0.0000000'
Test #32:
score: 0
Accepted
time: 1000ms
memory: 10024kb
input:
1 300 2 -999999 3 -999998 4 -999995 5 -999990 6 -999983 7 -999974 8 -999963 9 -999950 10 -999935 11 -999918 12 -999899 13 -999878 14 -999855 15 -999830 16 -999803 17 -999774 18 -999743 19 -999710 20 -999675 21 -999638 22 -999599 23 -999558 24 -999515 25 -999470 26 -999423 27 -999374 28 -999323 29 -9...
output:
80244.513740441252594
result:
ok found '80244.5137404', expected '80244.5137404', error '0.0000000'
Test #33:
score: 0
Accepted
time: 1252ms
memory: 9912kb
input:
1 300 -582688 -338066 65950 664506 726195 -342195 778617 -357210 -854288 556277 300499 294357 643715 884595 145808 699895 823594 197029 -326906 -938477 -635849 -984773 -133686 656789 -435448 690719 903384 -472986 82595 315750 -162788 541714 -77694 -237304 -850565 -426412 248922 -808508 -719332 -6663...
output:
1478.830055879941028
result:
ok found '1478.8300559', expected '1478.8300559', error '0.0000000'
Test #34:
score: 0
Accepted
time: 1195ms
memory: 9836kb
input:
1 300 329399 -774056 -453420 -971922 -963389 -692906 -901061 -690960 -954671 -555749 954332 -856245 97920 127454 422794 -72309 402518 -482396 -274243 -242236 -63992 224700 841180 586025 -266496 -824730 -178245 -230280 680876 907784 553835 674598 89593 396532 143208 -684880 538608 -578116 -422477 757...
output:
972.423280234061508
result:
ok found '972.4232802', expected '972.4232802', error '0.0000000'
Test #35:
score: 0
Accepted
time: 1031ms
memory: 10152kb
input:
1 300 -360611 262745 -266788 208188 -959303 -907228 -443316 -204307 682906 -640611 -629502 -217089 -323067 -687634 437059 491032 -924621 882842 844758 667473 765630 -661241 -192156 -841346 -154832 -812793 -47327 10282 -597348 957691 892586 942751 142330 937555 953415 -727776 -605831 643868 -310790 -...
output:
1247.635447575413309
result:
ok found '1247.6354476', expected '1247.6354476', error '0.0000000'
Test #36:
score: 0
Accepted
time: 1045ms
memory: 10056kb
input:
1 300 -206748 733504 405233 346961 -313290 -216319 -485737 -231831 -164104 165946 -515020 -589364 982156 -80607 873259 619605 -482416 -888108 -569548 252891 -445640 901994 985477 -967333 42455 -483916 73904 760015 -943641 942808 396828 484027 -841584 -24224 -175993 952815 790566 541282 -279849 -3442...
output:
999.019396375516521
result:
ok found '999.0193964', expected '999.0193964', error '0.0000000'
Test #37:
score: 0
Accepted
time: 956ms
memory: 10168kb
input:
1 300 580502 -850604 -828356 778 184624 -535893 -697221 -969976 896503 -655248 -76966 -243055 60920 160544 44843 -658551 -447963 886466 278568 389553 -623912 -127161 678049 -413324 -430351 -318993 -817724 -933164 -711215 340590 -74113 689203 68654 -100261 182253 786353 970301 867792 -749733 -811174 ...
output:
842.059072396302895
result:
ok found '842.0590724', expected '842.0590724', error '0.0000000'
Test #38:
score: 0
Accepted
time: 1215ms
memory: 10008kb
input:
1 300 -316120 -118763 45309 190875 409669 -105265 -506284 573308 -516833 322648 -866719 -936225 -12677 -985703 711314 569209 941787 83443 -514860 686132 -790586 -545380 430362 -424821 -833415 938854 -942534 683223 -240135 606924 -403050 269157 -215947 985881 -549116 600378 459464 -595098 725250 1147...
output:
1024.497869845698233
result:
ok found '1024.4978698', expected '1024.4978698', error '0.0000000'
Test #39:
score: 0
Accepted
time: 1046ms
memory: 10076kb
input:
1 300 -173407 -202877 781435 -868900 -708456 340380 -576940 717700 182725 270819 936854 705842 -558936 563953 -442817 -537862 456021 536960 -280357 -280460 865334 142839 774139 179758 441597 150328 97859 -980348 -33644 644740 -930102 492073 -672777 225390 567301 -123428 272474 613299 939529 -568972 ...
output:
999.858900836231214
result:
ok found '999.8589008', expected '999.8589008', error '0.0000000'
Test #40:
score: 0
Accepted
time: 1062ms
memory: 10052kb
input:
1 300 -345250 -831776 -186776 -708481 -461210 345548 -813591 339981 875529 -243454 -612714 -565349 342248 -74704 440632 -335722 -680195 541251 -40910 -905178 644877 899186 274573 743026 873540 -442740 535392 952686 797733 860447 -20479 505758 -951532 613082 -890210 663776 767606 -285569 466835 86332...
output:
931.052311224623963
result:
ok found '931.0523112', expected '931.0523112', error '0.0000000'
Test #41:
score: 0
Accepted
time: 1030ms
memory: 9876kb
input:
1 300 370249 -59123 -776101 -977670 -243135 -532403 -579041 96635 569778 -862215 413939 -366298 481224 272525 393367 -40979 483831 994010 -233019 628811 -143918 477955 339126 11331 -107685 517540 622176 -412060 -177324 -205192 431089 749790 -95536 -210836 548410 -707079 616094 -127500 -783278 -72261...
output:
933.760486718088487
result:
ok found '933.7604867', expected '933.7604867', error '0.0000000'
Test #42:
score: 0
Accepted
time: 1330ms
memory: 10236kb
input:
1 300 572725 -213611 493742 -808213 -710052 -380510 893881 -474967 9640 -788263 -459353 580756 -26412 638961 440498 -802856 453695 -912107 22051 -399011 547574 755649 -686907 874963 -504322 -340049 692117 -724428 668948 874184 48863 726276 -663172 -738633 360506 985895 589965 723490 -791113 -581246 ...
output:
1077.841380660279810
result:
ok found '1077.8413807', expected '1077.8413807', error '0.0000000'
Test #43:
score: 0
Accepted
time: 1317ms
memory: 10020kb
input:
1 300 -18347 947891 -18966 947674 -18153 949129 371892 55936 -19040 948495 -19316 948666 -19369 949236 -18720 948324 -19293 949610 -17823 949522 -19243 948220 -18639 948552 -17649 949411 371651 54266 -19228 948586 -17602 948463 -19485 949188 -18243 948112 -17773 948743 372205 54093 -18298 949126 371...
output:
430.901650850444753
result:
ok found '430.9016509', expected '430.9016509', error '0.0000000'
Test #44:
score: 0
Accepted
time: 1027ms
memory: 10188kb
input:
1 300 -74242 456694 -526886 299650 -74220 457055 -73487 456305 -73859 456656 61507 -819056 60998 -819121 -526707 299370 -526276 300041 61552 -817655 -526738 299576 -74124 456791 -527186 299008 61978 -818405 -74813 455682 60560 -819145 -73451 455525 -74892 457185 -73693 456477 60721 -818196 60214 -81...
output:
90267.093134151844424
result:
ok found '90267.0931342', expected '90267.0931341', error '0.0000000'
Test #45:
score: 0
Accepted
time: 902ms
memory: 9804kb
input:
1 300 574585 394710 574622 393610 -423278 771639 -424926 771360 -424084 771410 -355381 -781788 -355711 -782971 573941 394518 -356559 -782641 -356747 -782401 468958 -215431 -423584 771961 574237 394615 -423230 771874 574235 394702 -424141 771353 -423250 771823 469278 -214864 -423677 771854 470643 -21...
output:
217408.148135305644246
result:
ok found '217408.1481353', expected '217408.1481353', error '0.0000000'
Test #46:
score: 0
Accepted
time: 745ms
memory: 9832kb
input:
1 300 426446 450150 704880 -177836 705023 -177943 365125 -787336 426646 450111 365336 -787509 -488479 191560 365230 -787626 351178 85715 426393 450079 426499 450252 350929 85788 351095 85697 350955 85774 351185 85404 426289 450343 -488469 191487 365412 -787578 351069 85754 -488205 191341 365332 -787...
output:
20170.870906386950082
result:
ok found '20170.8709064', expected '20170.8709064', error '0.0000000'
Test #47:
score: 0
Accepted
time: 858ms
memory: 9976kb
input:
1 300 -400243 814451 22608 892635 -400101 814103 6514 778975 993334 -477496 6342 779132 462061 255284 -51701 297766 22472 892564 340929 -448021 479819 -339231 -400286 814390 211825 26983 6556 779317 993060 -477289 993308 -477342 -51535 297899 340706 -447842 340883 -447854 -400416 814256 -400283 8141...
output:
9230.442316324748390
result:
ok found '9230.4423163', expected '9230.4423163', error '0.0000000'
Test #48:
score: 0
Accepted
time: 830ms
memory: 9932kb
input:
1 300 -474014 -864992 -630838 -307407 -630606 -307503 -124096 -743059 -771964 728691 772586 240106 -772183 728879 391413 526273 199846 912927 428389 -576556 -308290 579377 -255160 -108840 772406 240313 -367068 -161358 772571 240365 -308290 579342 391393 526479 -415239 -4737 -367131 -161451 199868 91...
output:
15025.974843814266933
result:
ok found '15025.9748438', expected '15025.9748438', error '0.0000000'
Test #49:
score: 0
Accepted
time: 713ms
memory: 10088kb
input:
1 300 50620 -400031 50739 -399860 510490 905605 -231850 -472272 819819 -32769 556769 430166 510572 905474 -835681 -521539 -892931 517162 308414 643333 726593 422199 864670 -884154 -923273 383788 405709 273425 -479932 -974056 410500 738923 186655 767275 -182443 950085 -567600 -112887 603101 210566 93...
output:
3406.453545215318627
result:
ok found '3406.4535452', expected '3406.4535452', error '0.0000000'
Test #50:
score: 0
Accepted
time: 1021ms
memory: 10036kb
input:
1 300 176452 -329206 -579449 737212 -127383 552242 979657 -356153 80368 -694513 460265 -812959 445149 141242 -457009 -165865 607661 133016 -790741 -28932 833272 -591475 -579288 737176 -259244 232127 -387178 -302780 176289 -329051 -581332 414202 130425 339972 280492 -57804 -23731 -362222 -538093 -596...
output:
1990.340567872608744
result:
ok found '1990.3405679', expected '1990.3405679', error '0.0000000'
Test #51:
score: 0
Accepted
time: 890ms
memory: 9868kb
input:
1 300 1000000 0 999780 20942 999122 41875 998026 62790 996492 83677 994521 104528 992114 125333 989272 146083 985996 166768 982287 187381 978147 207911 973578 228350 968583 248689 963162 268919 957319 289031 951056 309016 944376 328866 937281 348572 929776 368124 921863 387515 913545 406736 904827 4...
output:
499972.252536330721341
result:
ok found '499972.2525363', expected '499972.2525363', error '0.0000000'
Test #52:
score: 0
Accepted
time: 876ms
memory: 9864kb
input:
1 299 1000000 0 999111 42156 996445 84238 992008 126169 985807 167877 977854 209286 968162 250323 956748 290915 943634 330989 928842 370475 912398 409303 894332 447402 874676 484707 853465 521149 830736 556665 806531 591191 780891 624666 753863 657030 725495 688227 695837 718199 664941 746895 632864...
output:
208109.814859424659517
result:
ok found '208109.8148594', expected '208109.8148594', error '0.0000000'