QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#582060 | #784. 旋转卡壳 | xorzj | 100 ✓ | 207ms | 33840kb | C++17 | 21.4kb | 2024-09-22 15:11:57 | 2024-10-16 12:22:30 |
Judging History
你现在查看的是最新测评结果
- [2024-10-16 12:18:36]
- hack成功,自动添加数据
- (/hack/1005)
- [2024-09-24 16:55:39]
- hack成功,自动添加数据
- (/hack/888)
- [2024-09-22 15:11:57]
- 提交
answer
#include <bits/stdc++.h>
#define rep(a, b, c) for (int a = b; a <= c; a++)
#define ALL(x) (x).begin(), (x).end()
#define IOS cin.tie(0)->sync_with_stdio(false)
#ifdef LOCAL
#include "debug.h"
#else
#define deb(...) 42
#endif
#define OPENSTACK
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> pii;
const int MAXN = 2e5 + 5;
const int INF = 0x3f3f3f3f;
typedef double db;
constexpr db inf = 1e20;
constexpr db eps = 1e-8;
const db pi = acos(-1);
constexpr int sgn(db x) { return x < -eps ? -1 : x > eps; }
constexpr int cmp(db x, db y) { return sgn(x - y); }
struct Point {
db x, y;
constexpr Point(db _x = 0, db _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 db& k) { return Point(x * k, y * k); }
constexpr Point operator/(const db& k) { return Point(x / k, y / k); }
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 Point& operator*=(const db& k) { return x *= k, y *= k, *this; }
constexpr Point& operator/=(const db& k) { return x /= k, y /= k, *this; }
constexpr bool operator==(const Point& r) const noexcept
{
return cmp(x, r.x) == 0 and cmp(y, r.y) == 0;
}
constexpr bool operator<(const Point& r) const noexcept
{
return sgn(x - r.x) == 0 ? sgn(y - r.y) < 0 : x < r.x;
}
friend istream& operator>>(istream& is, Point& p) { return is >> p.x >> p.y; }
friend ostream& operator<<(ostream& os, Point p)
{
return os << "(" << p.x << ", " << p.y << ")";
}
constexpr db dot(const Point& r) const { return x * r.x + y * r.y; }
constexpr db cross(const Point& r) const { return x * r.y - y * r.x; }
constexpr int quad() const
{
return sgn(y) > 0 || (sgn(y) == 0 && sgn(x) > 0) ? 1 : -1;
}
constexpr bool arg_cmp(const Point& r) const
{
int L = (*this).quad(), R = r.quad();
if (L != R) return L < R;
db X = x * r.y, Y = r.x * y;
if (X != Y) return X > Y;
return x < r.x;
}
};
db dot(Point a, Point b) { return a.x * b.x + a.y * b.y; }
db cross(Point a, Point b) { return a.x * b.y - a.y * b.x; }
db square(Point p) { return dot(p, p); }
db len(Point p) { return sqrt(db(square(p))); }
Point unit(Point p) { return p / len(p); }
db arg(Point p) { return atan2(p.y, p.x); }
Point polar(db r, db theta) { return Point(cos(theta) * r, sin(theta) * r); }
Point rotleft(Point p) { return Point(-p.y, p.x); }
Point rotright(Point p) { return Point(p.y, -p.x); }
Point rotate(Point p, Point r, db angle)
{
Point v = p - r;
db c = cos(angle), s = sin(angle);
return Point(p.x + v.x * c - v.y * s, p.y + v.x * s + v.y * c);
}
// 1 : left, 0 : same, -1 : right
int toleft(Point a, Point b, Point c) { return sgn(cross(b - a, c - a)); }
int toleft(Point a, Point b) { return sgn(cross(a, b)); }
//(0,0) in negative plane
int quad(Point p)
{
return sgn(p.y) > 0 || (sgn(p.y) == 0 && sgn(p.x) > 0) ? 1 : -1;
}
bool arg_cmp(const Point& l, const Point& r) { return l.arg_cmp(r); }
db distance(const Point& a, const Point& b) { return len(a - b); }
struct Line {
Point a, b;
Line() = default;
Line(Point a, Point b) : a(a), b(b) {}
Line(Point p, db angle)
{
a = p;
if (cmp(angle, pi / 2) == 0)
b = (a + Point(0, 1));
else
b = (a + Point(1, tan(angle)));
}
// ax + by + c = 0
Line(db A, db B, db C)
{
if (sgn(A) == 0)
a = Point(0, -C / B), b = Point(1, -C / B);
else if (sgn(B) == 0)
a = Point(-C / A, 0), b = Point(-C / A, 1);
else
a = Point(0, -C / B), b = Point(-C / A, 0);
}
};
struct Segment : Line {
Segment() = default;
Segment(Point a, Point b) : Line(a, b) {}
};
db len(const Line& l) { return len(l.b - l.a); }
int toleft(Point p, Line l) { return sgn(cross(l.b - l.a, p - l.a)); }
bool parallel(Line l1, Line l2)
{
return sgn(cross(l1.b - l1.a, l2.b - l2.a)) == 0;
}
bool orthogonal(const Line& l1, const Line& l2)
{
return sgn(dot(l1.a - l1.b, l2.a - l2.b)) == 0;
}
#define crossOp(a, b) sgn(cross(a, b))
#define dotOp(a, b) sgn(dot(a, b))
// 两直线弧度
db rad(const Line& l1, const Line& l2)
{
return atan2(fabs(cross(l1.b - l1.a, l2.b - l2.a)),
dot(l1.b - l1.a, l2.b - l2.a));
}
// 返回直线倾斜角 0<=angle<π
db angle(const Line& l)
{
db k = atan2(l.b.y - l.a.y, l.b.x - l.a.x);
if (sgn(k) < 0) k += pi;
if (sgn(k - pi) == 0) k -= pi;
return k;
}
db distancePL(const Point& p, const Line& l)
{
return fabs(cross(l.b - l.a, p - l.a)) / len(l);
}
db distancePS(const Point& p, const Segment& l)
{
if (sgn(dot(p - l.a, l.b - l.a)) < 0) return distance(p, l.a);
if (sgn(dot(p - l.b, l.a - l.b)) < 0) return distance(p, l.b);
return distancePL(p, l);
}
int pointonsegment(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 (square(b) < square(c)) return -2; // "ONLINE_FRONT"
return 0; // "ON_SEGMENT"
}
bool intersect(const Point& p, const Line& l)
{
return abs(pointonsegment(l.a, l.b, p)) != 1;
}
bool intersect(const Point& p, const Segment& s)
{
return pointonsegment(s.a, s.b, p) == 0;
}
bool intersect(const Line& l, const Line& m) { return !parallel(l, m); }
bool intersect(const Line& l, const Segment& s)
{
return crossOp(l.b - l.a, s.a - l.a) * crossOp(l.b - l.a, s.b - l.a) <= 0;
}
bool intersect(const Segment& s, const Segment& t)
{
return pointonsegment(s.a, s.b, t.a) * pointonsegment(s.a, s.b, t.b) <= 0 &&
pointonsegment(t.a, t.b, s.a) * pointonsegment(t.a, t.b, s.b) <= 0;
}
db distanceSS(const Segment& l, const Segment& m)
{
if (intersect(l, m)) return 0.0;
return min({ distancePS(l.a, m), distancePS(l.b, m), distancePS(m.a, l),
distancePS(m.b, l) });
}
// 2 规范相交 1 非规范相交 0 不相交
int crossSS(Segment l, Segment m)
{
int d1 = toleft(m.a, l);
int d2 = toleft(m.b, l);
int d3 = toleft(l.a, m);
int d4 = toleft(l.b, m);
if ((d1 ^ d2) == -2 && (d3 ^ d4) == -2) return 2;
return (d1 == 0 && intersect(m.a, l)) || (d2 == 0 && intersect(m.b, l)) ||
(d3 == 0 && intersect(l.a, m)) || (d4 == 0 && intersect(l.b, m));
}
// 2 规范相交 1 非规范相交 0 不相交
int crossLS(Line l, Segment m)
{
int d1 = toleft(m.a, l);
int d2 = toleft(m.b, l);
if ((d1 ^ d2) == -2) return 2;
return (d1 == 0 || d2 == 0);
}
// 0 平行 1 重合 2 相交
int crossLL(Line l, Line m)
{
if (parallel(l, m)) return intersect(l.a, m);
return 2;
}
Point crosspointLL(const Line& l, const Line& m)
{
db A = cross(l.b - l.a, m.b - m.a);
db B = cross(l.b - l.a, l.b - m.a);
if (sgn(A) == 0 and sgn(B) == 0) return m.a;
return m.a + (m.b - m.a) * (B / A);
}
// 点到直线投影点
Point projection(const Point& p, const Line& l)
{
db t = dot(p - l.a, l.a - l.b) / square(l.a - l.b);
return l.a + (l.a - l.b) * t;
}
// 直线对称点
Point symmetrypoint(const Point& p, const Line& l)
{
Point q = projection(p, l);
return Point(2 * q.x - p.x, 2 * q.y - p.y);
}
using P = Point;
using Points = vector<P>;
using Polygon = Points;
// 周长
db perimeter(const Polygon& p)
{
db res = 0;
int n = p.size();
for (int i = 0; i < n; i++) res += len(p[i] - p[(i + 1) % n]);
return res;
}
// 面积两倍
db area2(const Polygon& p)
{
db res = 0;
int n = p.size();
for (int i = 0; i < n; i++) res += cross(p[i], p[(i + 1) % n]);
return res;
}
// 凸性判定 逆时针给出点
bool is_convex(const Polygon& p)
{
int n = (int) p.size();
for (int i = 0; i < n; i++) {
if (pointonsegment(p[(i + n - 1) % n], p[i], p[(i + 1) % n]) == -1)
return false;
}
return true;
}
enum { OUT, ON, IN };
// 2 contains 1 on segment 0 out
int pointInPolygon(const Point& a, const Polygon& p)
{
int n = p.size();
for (int i = 0; i < n; i++) {
if (intersect(a, Segment(p[i], p[(i + 1) % n]))) return ON;
}
int t = 0;
for (int i = 0; i < n; i++) {
auto u = p[i];
auto v = p[(i + 1) % n];
if (cmp(u.x, a.x) == -1 && cmp(v.x, a.x) >= 0 &&
toleft(a, Line(v, u)) > 0) {
t ^= 1;
}
if (cmp(u.x, a.x) >= 0 && cmp(v.x, a.x) == -1 &&
toleft(a, Line(u, v)) > 0) {
t ^= 1;
}
}
return t == 1 ? IN : OUT;
}
// 凸多边形log求包含点问题
int pointInconvexPolygonlog(const Point& p, const Polygon& Q)
{
int N = (int) Q.size();
Point g = (Q[0] + Q[N / 3] + Q[N * 2 / 3]) / 3.0;
if (g == p) return IN;
Point gp = p - g;
int l = 0, r = N;
while (r - l > 1) {
int mid = (l + r) / 2;
Point gl = Q[l] - g;
Point gm = Q[mid] - g;
if (cross(gl, gm) > 0) {
if (cross(gl, gp) >= 0 && cross(gm, gp) <= 0)
r = mid;
else
l = mid;
}
else {
if (cross(gl, gp) <= 0 && cross(gm, gp) >= 0)
l = mid;
else
r = mid;
}
}
r %= N;
db v = cross(Q[l] - p, Q[r] - p);
return sgn(v) == 0 ? ON : sgn(v) == -1 ? OUT : IN;
}
bool segmentInPolygon(const Segment& s, const Polygon& p)
{
auto [a, b] = s;
if (pointInPolygon(a, p) == 0 || pointInPolygon(b, p) == 0) return false;
int n = p.size();
Polygon q;
for (int i = 0; i < n; i++) {
auto l = Segment(p[i], p[(i + 1) % n]);
if (crossSS(s, l) == 2) return false;
if (intersect(a, l))
q.push_back(a);
else if (intersect(b, l))
q.push_back(b);
else if (intersect(p[i], l))
q.push_back(p[i]);
}
sort(q.begin(), q.end());
for (int i = 0; i + 1 < q.size(); i++) {
if (pointInPolygon((q[i] + q[i + 1]) / 2, p) == 0) return false;
}
return true;
}
bool intersect(const Polygon& ps, const Polygon& qs)
{
int pl = ps.size(), ql = qs.size(), 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;
db v = cross(a, b);
db va = cross(qs1 - qs0, ps1 - qs0);
db 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;
}
// 凸包
Polygon getHull(Polygon p)
{
Polygon h, l;
sort(p.begin(), p.end());
p.erase(unique(p.begin(), p.end()), p.end());
if (p.size() <= 1) return p;
for (auto a : p) {
//<= >= 弹出共线点 < >不弹出共线点
while (h.size() > 1 && cross(a - h.back(), a - h[h.size() - 2]) <= 0)
h.pop_back();
while (l.size() > 1 && cross(a - l.back(), a - l[l.size() - 2]) >= 0)
l.pop_back();
l.push_back(a);
h.push_back(a);
}
l.pop_back();
reverse(h.begin(), h.end());
h.pop_back();
l.insert(l.end(), h.begin(), h.end());
return l;
}
// 平面割 返回l左侧的多边形,凸多边形
Polygon convex_cut(const Polygon& a, const Line& l)
{
Polygon ret;
int n = a.size();
for (int i = 0; i < n; i++) {
const Point& now = a[i];
const Point& nxt = a[(i + 1) % n];
auto cf = toleft(now, l);
auto cs = toleft(nxt, l);
if (cf >= 0) {
ret.emplace_back(now);
}
if (cf * cs < 0) {
ret.emplace_back(crosspointLL(Line(now, nxt), l));
}
}
return ret;
}
// 最远点对(旋转卡壳)凸多边形
db rotatingCalipers(Polygon a)
{
int n = a.size();
if (n <= 2) return distance(a[0], a[1]);
int i = 0, j = 0;
for (int k = 0; k < n; k++) {
if (a[k] < a[i]) i = k;
if (a[j] < a[k]) j = k;
}
db res = 0;
int si = i, sj = j;
while (i != sj || j != si) {
res = max(res, distance(a[i], a[j]));
if (crossOp(a[(i + 1) % n] - a[i], a[(j + 1) % n] - a[j]) < 0)
i = (i + 1) % n;
else
j = (j + 1) % n;
}
return res;
}
// 分治法最近点对
db closestPair(Polygon s)
{
sort(s.begin(), s.end());
int n = s.size();
if (n <= 1) return inf;
int m = n / 2;
db x = s[m].x;
db res = min(closestPair(Polygon(s.begin(), s.begin() + m)),
closestPair(Polygon(s.begin() + m, s.end())));
sort(s.begin(), s.end());
deque<int> deq;
for (int i = 0; i < n; i++) {
if (cmp(abs(s[i].x - x), res) >= 0) continue;
while (!deq.empty() && cmp(s[deq.front()].y, s[i].y - res) <= 0)
deq.pop_front();
for (auto e : deq) res = min(res, distance(s[i], s[e]));
deq.push_back(i);
}
return res;
}
struct Circle {
Point o;
db r;
Circle() {}
Circle(Point o_, db r_) { o = o_, r = r_; }
friend istream& operator>>(istream& is, Circle& c)
{
return is >> c.o >> c.r;
}
};
// 4 相离 3 外切 2 相交 1 内切 0 包含
int crossCC(Circle c1, Circle c2)
{
if (c1.r < c2.r) swap(c1, c2);
db d = len(c1.o - c2.o);
if (sgn(c1.r + c2.r - d) == -1) return 4;
if (sgn(c1.r + c2.r - d) == 0) return 3;
if (sgn(c1.r - c2.r - d) == -1) return 2;
if (sgn(c1.r - c2.r - d) == 0) return 1;
return 0;
}
int pointInCircle(const Point& p, const Circle& c)
{
db d = distance(c.o, p);
int cp = cmp(d, c.r);
if (cp > 0) return OUT;
if (cp < 0) return IN;
return ON;
}
Circle incircle_triangle(Point a, Point b, Point c)
{
db A = len(b - c), B = len(c - a), C = len(a - b);
Point o = a * A + b * B + c * C;
o /= A + B + C;
db r = len(cross(o - a, b - a) / len(b - a));
return { o, r };
}
Circle circumcircle_triangle(Point a, Point b, Point c)
{
db A = square(b - c);
db B = square(c - a);
db C = square(a - b);
db s = A * (B + C - A), t = B * (C + A - B), u = C * (A + B - C);
db l = s + t + u;
s /= l, t /= l, u /= l;
Point o = a * s + b * t + c * u;
db r = len(a - o);
return { o, r };
}
bool intersect(const Circle& c, const Line& l)
{
return cmp(c.r, distancePL(c.o, l)) >= 0;
}
// 0 圆的外部,内部包括圆上包含线段 1 严格穿过圆
// 2圆心在s的投影点在线段s上(不包括端点)
int intersect(const Circle& c, const Segment& s)
{
Point h = projection(c.o, s);
if (cmp(distance(c.o, h), c.r) > 0) return 0;
db d1 = len(c.o - s.a), d2 = len(c.o - s.b);
if (cmp(c.r, d1) >= 0 && cmp(c.r, d2) >= 0) return 0;
if (cmp(c.r, d1) * cmp(c.r, d2) < 0) return 1;
if (sgn(dot(s.a - h, s.b - h)) < 0) return 2;
return 0;
}
// l1 l2 的对称轴
vector<Line> corner(Line l1, Line l2)
{
vector<Line> res;
if (parallel(l1, l2)) {
db d = distancePL(l2.a, l1) / 2.0;
Point v1 = l1.b - l1.a;
v1 = unit(v1) * d;
Point p = l2.a + rotleft(v1);
db d1 = distancePL(p, l1);
db d2 = distancePL(p, l2);
if (abs(d1 - d2) > d) {
p = l2.a + rotright(v1);
}
res.push_back(Line(p, p + v1));
}
else {
Point p = crosspointLL(l1, l2);
Point v1 = l1.b - l1.a, v2 = l2.b - l2.a;
v1 = unit(v1);
v2 = unit(v2);
res.push_back(Line(p, p + (v1 + v2)));
res.push_back(Line(p, p + rotleft(v1 + v2)));
}
return res;
}
vector<Point> crosspointCL(Circle c, Line l)
{
Point h = projection(c.o, l);
db d = c.r * c.r - square(c.o - h);
if (sgn(d) == -1) return {};
if (sgn(d) == 0) return { h };
Point x = unit(l.a - l.b) * sqrt(d);
return { h - x, h + x };
}
Polygon crosspointCS(const Circle& c, const Segment& s)
{
int num = intersect(c, s);
if (num == 0) return {};
auto res = crosspointCL(c, Line(s.a, s.b));
if (num == 2) return res;
if (sgn(dot(s.a - res[0], s.b - res[0])) > 0) swap(res[0], res[1]);
return { res[0] };
}
Polygon crosspointCC(Circle c1, Circle c2)
{
db r1 = c1.r, r2 = c2.r;
if (r1 < r2) return crosspointCC(c2, c1);
db d = len(c2.o - c1.o);
int op = crossCC(c1, c2);
if (op == 4 || op == 0) return {};
Point v = c2.o - c1.o;
if (op == 3 || op == 1) return { c1.o + unit(v) * r1 };
db p = ((r1 * r1 - r2 * r2) / d + d) / 2, q = sqrt(r1 * r1 - p * p);
Point h = c1.o + unit(v) * p;
Point i = unit(rotleft(v));
return { h + i * q, h - i * q };
}
// p1,p2 的角平分线 在p1p2逆时针方向
Line bisector(Point p1, Point p2)
{
Circle c1 = Circle(p1, len(p1 - p2)), c2 = Circle(p2, len(p1 - p2));
auto p = crosspointCC(c1, c2);
if (cross(p2 - p1, p[0] - p1) > 0) swap(p[0], p[1]);
return Line(p[0], p[1]);
}
// 点到圆的切点
Polygon tangent_to_circle(const Circle& c, const Point& p)
{
return crosspointCC(c, Circle(p, sqrt(square(c.o - p) - c.r * c.r)));
}
// 两圆公切线
vector<Line> common_tangent(const Circle& c1, const Circle& c2)
{
if (c1.r < c2.r) return common_tangent(c2, c1);
vector<Line> res;
db g = distance(c1.o, c2.o);
if (sgn(g) == 0) return res;
Point u = (c2.o - c1.o) / g, v = rotleft(u);
// -1 外公切线 1 内公切线
for (int s : {-1, 1}) {
db h = (c1.r + c2.r * s) / g;
if (cmp(1, h * h) == 0)
res.emplace_back(c1.o + u * c1.r, c1.o + (u + v) * c1.r);
else if (cmp(1, h * h) > 0) {
Point U = u * h, V = v * sqrt(1 - h * h);
res.emplace_back(c1.o + (U + V) * c1.r, c2.o - (U + V) * c2.r * s);
res.emplace_back(c1.o + (U - V) * c1.r, c2.o - (U - V) * c2.r * s);
}
}
return res;
}
// 三角剖分 一个端点在圆心的三角形和圆的2倍面积并
db commonarea_impl(const Circle& c, const Point& a, const Point& b)
{
auto va = c.o - a, vb = c.o - b;
db f = cross(va, vb), res = 0;
if (sgn(f) == 0) return res;
if (cmp(max(len(va), len(vb)), c.r) <= 0) return f;
if (cmp(distancePS(c.o, Segment(a, b)), c.r) >= 0)
return c.r * c.r * arg(Point(dot(va, vb), cross(va, vb)));
auto cand = crosspointCS(c, Segment(a, b));
if (cand.empty()) return res;
if (cand.size() > 1u && dot(cand[1] - cand[0], a - cand[0]) > 0)
swap(cand[0], cand[1]);
cand.emplace(cand.begin(), a);
cand.emplace_back(b);
for (int i = 0; i + 1 < cand.size(); i++)
res += commonarea_impl(c, cand[i], cand[i + 1]);
return res;
}
db commonarea(const Circle& c, const Polygon& P)
{
if (P.size() < 3) return 0;
db res = 0;
int n = P.size();
for (int i = 0; i < n; i++) res += commonarea_impl(c, P[i], P[(i + 1) % n]);
return res / 2;
}
db commonarea(Circle c1, Circle c2)
{
db r1 = c1.r, r2 = c2.r;
db d = len(c1.o - c2.o);
if (cmp(r1 + r2, d) <= 0) return 0;
if (cmp(fabs(r1 - r2), d) >= 0) return pi * min(r1, r2) * min(r1, r2);
db res = 0;
for (int _ = 0; _ < 2; _++) {
r1 = c1.r, r2 = c2.r;
db cosine = (d * d + r1 * r1 - r2 * r2) / (2 * d * r1);
db theta = acos(cosine) * 2;
res += (theta - sin(theta)) * r1 * r1 / 2;
swap(c1, c2);
}
return res;
}
// 已知两点半径,求圆心位置
vector<Point> center_given_radius(const Point& a, const Point& b, const db& r)
{
Point m = (b - a) * 0.5;
db d1 = len(m);
if (sgn(d1) == 0 || d1 > r) return {};
db d2 = sqrt(r * r - d1 * d1);
Point n = rotleft(m) * d2 / d1;
Point p = a + m - n, q = a + m + n;
if (p == q) return { p };
return { p, q };
}
void solve()
{
int n;
cin >> n;
Polygon P(n);
for (int i = 0; i < n; i++)cin >> P[i];
auto hull = getHull(P);
cout << fixed << setprecision(10) << rotatingCalipers(hull) << "\n";
}
int main()
{
#ifdef LOCAL
#ifdef OPENSTACK
int size = 128 << 20; // 64MB
char* p = (char*) malloc(size) + size;
#if (defined _WIN64) or (defined __unix)
__asm__("movq %0, %%rsp\n" ::"r"(p));
#else
__asm__("movl %0, %%esp\n" ::"r"(p));
#endif
#endif
#endif
IOS;
int _ = 1;
while (_--) {
solve();
}
#ifdef LOCAL
#ifdef OPENSTACK
exit(0);
#else
return 0;
#endif
#endif
}
这程序好像有点Bug,我给组数据试试?
Details
Tip: Click on the bar to expand more detailed information
Subtask #1:
score: 10
Accepted
Test #1:
score: 10
Accepted
time: 1ms
memory: 3928kb
input:
1000 0 0 -997615 -8573 -1988394 -28911 -2726572 -44296 -3491635 -60392 -4419752 -82814 -5298550 -105946 -5723430 -118453 -6608257 -147267 -7034966 -161982 -7563964 -181682 -8507871 -222865 -9499799 -271846 -10090186 -303547 -10400262 -322989 -10614073 -339725 -11081438 -378596 -11791568 -439127 -127...
output:
274339223.1895614266
result:
ok found '274339223.1895614', expected '274339223.1895614', error '0.0000000'
Test #2:
score: 10
Accepted
time: 1ms
memory: 3988kb
input:
1000 0 0 -887614 -1937 -1459359 -3808 -2421409 -24096 -3273181 -48456 -3917594 -76664 -4402753 -100164 -5375022 -150897 -5993935 -192089 -6587159 -238825 -7549680 -333298 -8330993 -416479 -9244392 -515027 -10010900 -598589 -10374584 -640275 -10767641 -686907 -11173081 -741316 -11821952 -833327 -1260...
output:
262687047.9274906218
result:
ok found '262687047.9274906', expected '262687047.9274906', error '0.0000000'
Test #3:
score: 10
Accepted
time: 1ms
memory: 3920kb
input:
1000 0 0 -631055 -2758 -1328409 -7463 -2248672 -20536 -2412978 -23564 -2659543 -28441 -3383179 -43406 -4183375 -64326 -4856658 -88337 -5799682 -134822 -6757348 -189404 -7132846 -212164 -7563226 -242116 -8368716 -300012 -9321463 -381770 -9831821 -432746 -10409503 -491057 -11360852 -607259 -11874199 -...
output:
257868038.6435896754
result:
ok found '257868038.6435897', expected '257868038.6435897', error '0.0000000'
Test #4:
score: 10
Accepted
time: 1ms
memory: 3888kb
input:
1000 0 0 -48652 -588 -951356 -20091 -1517426 -33325 -1965414 -51971 -2466111 -74904 -3046762 -103888 -3555833 -132002 -3976901 -156059 -4972848 -245498 -5921476 -332492 -6353035 -375491 -7327511 -496188 -7939064 -575429 -8842272 -694656 -9246222 -756797 -9771758 -860630 -10633761 -1031205 -10981774 ...
output:
259539672.4804533720
result:
ok found '259539672.4804534', expected '259539672.4804534', error '0.0000000'
Test #5:
score: 10
Accepted
time: 1ms
memory: 3920kb
input:
1000 0 0 -456569 -2668 -1141521 -7887 -1270801 -8967 -1971135 -21206 -2919889 -38188 -3903859 -71231 -4752603 -107450 -5508682 -143873 -6214620 -183392 -6718977 -212193 -7452291 -271600 -8408796 -354998 -9261882 -432674 -9528618 -457608 -10099091 -513153 -10320120 -535958 -11067358 -614356 -12050731...
output:
250217366.4826218486
result:
ok found '250217366.4826218', expected '250217366.4826218', error '0.0000000'
Test #6:
score: 10
Accepted
time: 1ms
memory: 3988kb
input:
1000 0 0 -794019 -17307 -1389128 -41522 -1928884 -68000 -2530256 -103641 -3335109 -158872 -4273633 -225636 -4655012 -253747 -5584931 -329387 -6190262 -382029 -6657521 -422826 -7445510 -497270 -8092482 -562235 -8879759 -646264 -9688106 -745847 -10545954 -857573 -11350736 -962711 -12106702 -1066386 -1...
output:
256130723.0053679943
result:
ok found '256130723.0053680', expected '256130723.0053680', error '0.0000000'
Test #7:
score: 10
Accepted
time: 1ms
memory: 3916kb
input:
1000 0 0 -785524 -1241 -1228373 -2123 -1584480 -5108 -2516949 -19826 -3109735 -51256 -3799285 -95138 -4215892 -125263 -5144743 -202941 -6071171 -287679 -6844072 -376760 -7786583 -487933 -8491316 -575443 -9458832 -700691 -9848966 -756816 -10135682 -798578 -11100151 -940696 -11527785 -1004652 -1221960...
output:
268992022.0570692420
result:
ok found '268992022.0570692', expected '268992022.0570692', error '0.0000000'
Test #8:
score: 10
Accepted
time: 1ms
memory: 3912kb
input:
1000 0 0 -787651 -697 -1319793 -8691 -1545057 -12462 -2239671 -24650 -2487763 -36810 -2983386 -61694 -3408212 -85910 -3650815 -105325 -4268088 -155258 -5088483 -225550 -5720403 -280762 -6036913 -309102 -6663280 -365291 -7656626 -456948 -8462737 -538137 -9318271 -628471 -9704990 -671367 -10363047 -74...
output:
251395356.7229873240
result:
ok found '251395356.7229873', expected '251395356.7229873', error '0.0000000'
Test #9:
score: 10
Accepted
time: 1ms
memory: 3896kb
input:
1000 0 0 -895815 -18037 -1536713 -40507 -2439825 -73040 -2896761 -94230 -3815334 -138606 -4520738 -176711 -4997585 -208924 -5399492 -237632 -5629592 -254751 -6518310 -320902 -7084766 -367663 -7724052 -423029 -8475256 -492590 -9071702 -551527 -9798581 -626155 -10535448 -702512 -11155572 -768931 -1208...
output:
259639018.6166957319
result:
ok found '259639018.6166957', expected '259639018.6166958', error '0.0000000'
Test #10:
score: 10
Accepted
time: 1ms
memory: 3992kb
input:
1000 0 0 -837332 -2192 -1593910 -10845 -2320576 -25425 -3294539 -45660 -4178010 -82673 -4936159 -128518 -5796274 -190640 -6313517 -228540 -7131129 -291797 -7751205 -354513 -8357330 -419926 -9355375 -542247 -9783911 -596434 -10313681 -667126 -10377189 -675659 -10824619 -750345 -11653618 -894218 -1234...
output:
267554454.1762451231
result:
ok found '267554454.1762451', expected '267554454.1762451', error '0.0000000'
Test #11:
score: 10
Accepted
time: 1ms
memory: 3900kb
input:
1000 0 0 -758133 -3909 -1146524 -7212 -1823781 -16200 -2561994 -26923 -3448934 -43815 -4337557 -80953 -4912706 -106752 -5770093 -182352 -6645519 -261073 -7156648 -309532 -7882740 -380211 -8731241 -470527 -9265139 -532092 -10083113 -633235 -10767248 -721935 -11729364 -862416 -12112647 -921658 -128310...
output:
259903024.7335910201
result:
ok found '259903024.7335910', expected '259903024.7335910', error '0.0000000'
Test #12:
score: 10
Accepted
time: 1ms
memory: 3988kb
input:
1000 0 0 -220082 -1509 -1148190 -9207 -2108923 -22196 -2713299 -30623 -3364648 -43866 -3891571 -54675 -4300261 -63335 -4622311 -72814 -5235380 -91992 -5680720 -106355 -6138401 -121807 -7013302 -160828 -7784753 -195568 -8750494 -245022 -9681201 -295430 -10320328 -334255 -11256371 -407963 -12199734 -4...
output:
261658565.5826949477
result:
ok found '261658565.5826949', expected '261658565.5826949', error '0.0000000'
Test #13:
score: 10
Accepted
time: 1ms
memory: 4004kb
input:
1000 0 0 -425515 -4558 -1293469 -14675 -1990220 -30271 -2703160 -49015 -3455818 -76450 -4210140 -107243 -4530367 -120805 -5136478 -158180 -5732363 -196472 -6247394 -230823 -7100635 -290064 -7703961 -335663 -8091361 -368200 -8752153 -427341 -9433796 -491521 -10139006 -563945 -10984402 -653149 -113386...
output:
256353710.9730163217
result:
ok found '256353710.9730163', expected '256353710.9730163', error '0.0000000'
Test #14:
score: 10
Accepted
time: 1ms
memory: 3988kb
input:
1000 0 0 -572806 -2255 -1477072 -15611 -1643871 -18681 -2578790 -51107 -3303402 -86192 -4032032 -123256 -4540711 -150307 -5462171 -206756 -6377222 -264514 -6921545 -316752 -7623842 -390821 -8329739 -466169 -9034451 -568935 -9600887 -653814 -9729771 -674650 -10461476 -795876 -11348904 -952387 -117122...
output:
255498134.5157807171
result:
ok found '255498134.5157807', expected '255498134.5157807', error '0.0000000'
Test #15:
score: 10
Accepted
time: 1ms
memory: 3940kb
input:
1000 0 0 -723350 -3997 -1405147 -10223 -2296494 -21394 -2876280 -32357 -3572827 -51397 -4452032 -87137 -4953249 -111910 -5388609 -141252 -5731586 -165403 -6101332 -197003 -6884756 -282055 -7719066 -372715 -8101214 -415308 -8855617 -516206 -9316024 -579909 -10091662 -705732 -10621099 -799022 -1137369...
output:
258992362.5300114155
result:
ok found '258992362.5300114', expected '258992362.5300114', error '0.0000000'
Test #16:
score: 10
Accepted
time: 1ms
memory: 3956kb
input:
1000 0 0 -638945 -769 -1345094 -2633 -2049372 -9786 -3043001 -20660 -3832821 -40968 -4616354 -61996 -5489016 -89554 -6075577 -112116 -7059918 -153506 -7917375 -193461 -8704241 -235730 -9411173 -289585 -9928254 -332456 -10816688 -407937 -11522358 -469782 -12333778 -541183 -12532282 -560003 -13293480 ...
output:
260884926.0498460531
result:
ok found '260884926.0498461', expected '260884926.0498461', error '0.0000000'
Test #17:
score: 10
Accepted
time: 1ms
memory: 4012kb
input:
1000 0 0 -929784 -9273 -1222089 -14360 -1633168 -22589 -2271669 -42262 -2863939 -61639 -3538074 -85549 -4537727 -127500 -5529674 -172462 -6106076 -217405 -6615381 -262810 -7383575 -342936 -8289266 -445052 -8474592 -467243 -9285779 -564519 -10059545 -662251 -10774681 -753541 -11666601 -869701 -120587...
output:
259788149.3996045291
result:
ok found '259788149.3996045', expected '259788149.3996045', error '0.0000000'
Test #18:
score: 10
Accepted
time: 1ms
memory: 4032kb
input:
1000 0 0 -436597 -2249 -897574 -4839 -1763026 -9858 -2199595 -14239 -2837069 -24431 -3656371 -67025 -4153771 -93216 -5062244 -151716 -5634320 -190859 -6503474 -278174 -7250273 -366225 -7276046 -369834 -7806600 -448708 -8317734 -530915 -8905662 -634997 -9766507 -790590 -9973653 -831916 -10555366 -955...
output:
277834510.7780300379
result:
ok found '277834510.7780300', expected '277834510.7780300', error '0.0000000'
Test #19:
score: 10
Accepted
time: 1ms
memory: 3976kb
input:
1000 0 0 -499456 -5028 -1395210 -19193 -2095999 -36599 -2278240 -43145 -2754419 -63055 -3701264 -104359 -4078225 -133214 -4292562 -151446 -5087031 -220375 -5649235 -277762 -6403916 -358749 -7403700 -470022 -7940233 -537110 -8433330 -607694 -9376563 -746831 -9903004 -831307 -10718505 -965214 -1171369...
output:
261984352.6271107793
result:
ok found '261984352.6271108', expected '261984352.6271108', error '0.0000000'
Test #20:
score: 10
Accepted
time: 1ms
memory: 3940kb
input:
1000 0 0 -347123 -2330 -1296972 -12856 -2114794 -28811 -3005647 -54768 -3802579 -79440 -4777546 -118441 -5386348 -146049 -6230831 -184743 -7083665 -250364 -7963538 -324047 -8621014 -381656 -9065618 -421654 -9883960 -496406 -10349110 -541972 -11146897 -621572 -12108943 -718091 -12921588 -803916 -1348...
output:
265979549.5809911788
result:
ok found '265979549.5809912', expected '265979549.5809912', error '0.0000000'
Subtask #2:
score: 30
Accepted
Dependency #1:
100%
Accepted
Test #21:
score: 30
Accepted
time: 13ms
memory: 5620kb
input:
30000 0 0 -27842 -9 -56782 -24 -64412 -29 -91618 -47 -121087 -68 -152541 -123 -182316 -183 -212916 -274 -234159 -341 -266126 -446 -289328 -523 -317883 -637 -340594 -728 -350940 -781 -374263 -905 -400736 -1046 -427862 -1199 -450458 -1327 -465289 -1413 -485809 -1534 -517032 -1724 -548368 -1921 -576015...
output:
254843548.6986402571
result:
ok found '254843548.6986403', expected '254843548.6986403', error '0.0000000'
Test #22:
score: 30
Accepted
time: 8ms
memory: 5616kb
input:
30000 0 0 -31209 -21 -39334 -27 -64601 -46 -86568 -64 -115119 -89 -143398 -117 -161108 -154 -179520 -196 -203131 -254 -234209 -335 -252923 -396 -275417 -473 -289767 -533 -311588 -627 -343100 -821 -369994 -998 -385492 -1101 -412257 -1281 -427669 -1387 -453860 -1575 -485750 -1817 -510891 -2019 -531160...
output:
250853956.0239689052
result:
ok found '250853956.0239689', expected '250853956.0239689', error '0.0000000'
Test #23:
score: 30
Accepted
time: 12ms
memory: 5616kb
input:
30000 0 0 -20075 -15 -53286 -46 -77410 -74 -104765 -117 -128452 -158 -138117 -176 -145933 -192 -169668 -264 -195119 -349 -220533 -437 -227177 -463 -259461 -594 -288461 -712 -304625 -788 -337671 -947 -358291 -1056 -388248 -1227 -411605 -1362 -422810 -1433 -444967 -1583 -464234 -1714 -471059 -1763 -48...
output:
250990461.7585058212
result:
ok found '250990461.7585058', expected '250990461.7585058', error '0.0000000'
Test #24:
score: 30
Accepted
time: 12ms
memory: 5656kb
input:
30000 0 0 -25406 -9 -53669 -24 -62096 -33 -84905 -59 -97980 -83 -118490 -127 -139980 -180 -168464 -256 -187325 -315 -208655 -393 -215588 -421 -244663 -541 -261958 -614 -288250 -735 -294235 -765 -308563 -838 -338619 -993 -350477 -1059 -363699 -1134 -379676 -1232 -398726 -1354 -430095 -1576 -459666 -1...
output:
253698546.2001740336
result:
ok found '253698546.2001740', expected '253698546.2001740', error '0.0000000'
Test #25:
score: 30
Accepted
time: 12ms
memory: 5492kb
input:
30000 0 0 -21134 -9 -45635 -23 -62583 -36 -90936 -72 -123048 -113 -148384 -151 -173729 -190 -194644 -225 -207752 -258 -236495 -342 -241543 -359 -272810 -476 -303141 -602 -324057 -690 -344614 -778 -364773 -871 -380490 -948 -407975 -1083 -433651 -1212 -464879 -1383 -485067 -1502 -513615 -1674 -537857 ...
output:
249331713.2810479105
result:
ok found '249331713.2810479', expected '249331713.2810479', error '0.0000000'
Test #26:
score: 30
Accepted
time: 12ms
memory: 5384kb
input:
30000 0 0 -21448 -2 -26656 -6 -55814 -36 -82967 -67 -107428 -97 -134427 -133 -152614 -158 -171092 -185 -199260 -236 -221094 -282 -254022 -354 -285389 -431 -318637 -513 -346959 -588 -371288 -663 -398215 -753 -430925 -909 -460659 -1052 -492385 -1212 -522834 -1369 -544343 -1480 -574493 -1645 -591923 -1...
output:
252099986.1016024053
result:
ok found '252099986.1016024', expected '252099986.1016024', error '0.0000000'
Test #27:
score: 30
Accepted
time: 8ms
memory: 5588kb
input:
30000 0 0 -14622 -3 -21004 -5 -52082 -23 -74883 -43 -96336 -71 -128458 -113 -156799 -154 -183046 -195 -192091 -210 -222978 -268 -242938 -309 -262594 -352 -278459 -388 -305011 -451 -334920 -535 -359764 -614 -386317 -705 -387178 -708 -403823 -768 -433061 -876 -462803 -990 -476883 -1056 -501388 -1177 -...
output:
252058372.1872791648
result:
ok found '252058372.1872792', expected '252058372.1872792', error '0.0000000'
Test #28:
score: 30
Accepted
time: 8ms
memory: 5540kb
input:
30000 0 0 -25620 -6 -58948 -27 -81188 -42 -108084 -65 -116725 -73 -125232 -81 -135235 -91 -151536 -109 -184450 -152 -207622 -186 -226702 -226 -253157 -296 -272563 -363 -285333 -416 -314647 -544 -343300 -671 -374313 -814 -396287 -921 -420576 -1040 -429098 -1083 -461737 -1259 -484471 -1384 -514561 -15...
output:
250472754.0190104544
result:
ok found '250472754.0190105', expected '250472754.0190105', error '0.0000000'
Test #29:
score: 30
Accepted
time: 12ms
memory: 5300kb
input:
30000 0 0 -33296 -14 -53478 -25 -77571 -40 -102204 -60 -131127 -87 -154300 -115 -164094 -129 -170807 -139 -182721 -162 -204059 -213 -233651 -291 -248862 -344 -272501 -427 -292422 -497 -316393 -587 -332926 -655 -357527 -758 -377377 -846 -400755 -952 -421907 -1051 -432483 -1106 -463837 -1277 -484678 -...
output:
250911365.3928250968
result:
ok found '250911365.3928251', expected '250911365.3928251', error '0.0000000'
Test #30:
score: 30
Accepted
time: 12ms
memory: 5508kb
input:
30000 0 0 -16184 -12 -47000 -41 -65809 -62 -97992 -98 -130432 -136 -141298 -155 -166593 -204 -199502 -297 -227146 -379 -253391 -469 -268774 -523 -296503 -636 -323982 -757 -356038 -900 -373220 -977 -398856 -1098 -425367 -1243 -452654 -1396 -476703 -1537 -489569 -1615 -493812 -1641 -521509 -1812 -5419...
output:
250844611.9027090669
result:
ok found '250844611.9027091', expected '250844611.9027091', error '0.0000000'
Test #31:
score: 30
Accepted
time: 12ms
memory: 5568kb
input:
30000 0 0 -25799 -4 -55851 -26 -80970 -45 -101274 -62 -132285 -92 -156585 -119 -172335 -137 -194967 -166 -207127 -182 -210322 -187 -232931 -224 -254065 -285 -276296 -355 -296092 -422 -319568 -506 -341162 -585 -366961 -682 -378425 -726 -406880 -836 -433997 -944 -462505 -1063 -484234 -1155 -510379 -12...
output:
252561817.9649026096
result:
ok found '252561817.9649026', expected '252561817.9649026', error '0.0000000'
Test #32:
score: 30
Accepted
time: 12ms
memory: 5628kb
input:
30000 0 0 -26056 -4 -54769 -14 -60303 -16 -87623 -57 -116864 -112 -138854 -159 -157862 -208 -175152 -264 -200884 -367 -230497 -499 -252728 -608 -270362 -698 -296046 -842 -305774 -898 -310136 -925 -332152 -1067 -333986 -1079 -355425 -1222 -364727 -1286 -382658 -1414 -392920 -1492 -425026 -1737 -44041...
output:
253995087.9124097824
result:
ok found '253995087.9124098', expected '253995087.9124098', error '0.0000000'
Test #33:
score: 30
Accepted
time: 12ms
memory: 5352kb
input:
30000 0 0 -9535 -2 -40752 -11 -60579 -26 -93471 -57 -118567 -94 -144069 -132 -173022 -182 -195295 -224 -223889 -296 -247193 -355 -264085 -399 -290833 -470 -296735 -486 -316658 -542 -335761 -609 -366899 -722 -382069 -779 -411737 -894 -434702 -985 -457466 -1078 -487157 -1201 -497974 -1248 -524864 -136...
output:
252472448.5275533199
result:
ok found '252472448.5275533', expected '252472448.5275533', error '0.0000000'
Test #34:
score: 30
Accepted
time: 12ms
memory: 5576kb
input:
30000 0 0 -24944 -5 -45218 -18 -63052 -30 -95222 -53 -122297 -76 -142451 -95 -166142 -128 -198625 -176 -224888 -226 -256971 -297 -268524 -323 -295294 -399 -316093 -462 -346071 -556 -357361 -596 -384063 -695 -413239 -808 -431516 -883 -455899 -988 -477258 -1083 -482936 -1109 -514885 -1259 -545203 -140...
output:
251091289.9211815596
result:
ok found '251091289.9211816', expected '251091289.9211816', error '0.0000000'
Test #35:
score: 30
Accepted
time: 8ms
memory: 5600kb
input:
30000 0 0 -30995 -2 -54625 -11 -82116 -24 -107137 -37 -118814 -46 -145376 -68 -153252 -80 -185690 -144 -216437 -215 -233722 -272 -253995 -343 -271631 -413 -292398 -507 -321561 -641 -349834 -782 -373847 -909 -394268 -1020 -413992 -1130 -437644 -1265 -455088 -1371 -479307 -1520 -487919 -1573 -510069 -...
output:
252314719.9735080898
result:
ok found '252314719.9735081', expected '252314719.9735081', error '0.0000000'
Test #36:
score: 30
Accepted
time: 9ms
memory: 5356kb
input:
30000 0 0 -27620 -15 -32869 -18 -63930 -40 -92226 -71 -117410 -103 -128286 -121 -160858 -177 -175636 -204 -202913 -255 -210245 -270 -231489 -321 -239502 -341 -270542 -438 -300109 -534 -328778 -641 -347216 -724 -378021 -873 -405203 -1017 -433216 -1174 -466343 -1375 -485498 -1495 -512206 -1683 -537113...
output:
252132224.5177777708
result:
ok found '252132224.5177778', expected '252132224.5177778', error '0.0000000'
Test #37:
score: 30
Accepted
time: 12ms
memory: 5616kb
input:
30000 0 0 -26512 -10 -51854 -27 -59926 -34 -72478 -45 -104402 -85 -134454 -126 -156279 -156 -187348 -202 -204100 -236 -236516 -302 -257885 -347 -283292 -401 -304536 -460 -329866 -533 -362401 -630 -368232 -649 -393217 -739 -412750 -810 -443034 -922 -470338 -1029 -481188 -1073 -497958 -1151 -530836 -1...
output:
251728991.7551814914
result:
ok found '251728991.7551815', expected '251728991.7551815', error '0.0000000'
Test #38:
score: 30
Accepted
time: 12ms
memory: 5624kb
input:
30000 0 0 -29212 -4 -38598 -7 -71599 -25 -95384 -48 -122534 -75 -152884 -108 -185395 -148 -193339 -166 -211296 -218 -242492 -319 -262879 -390 -280381 -452 -297193 -522 -316047 -608 -344702 -748 -362716 -837 -371851 -884 -392232 -990 -415911 -1120 -428530 -1190 -455344 -1346 -476289 -1469 -502141 -16...
output:
252836476.4363638759
result:
ok found '252836476.4363639', expected '252836476.4363639', error '0.0000000'
Test #39:
score: 30
Accepted
time: 11ms
memory: 5548kb
input:
30000 0 0 -32998 -8 -60868 -23 -90627 -40 -119903 -65 -145529 -87 -161760 -103 -169947 -115 -194965 -153 -217424 -191 -240218 -232 -262746 -278 -274663 -306 -300259 -367 -311698 -396 -338898 -472 -371940 -583 -391272 -648 -422137 -773 -450678 -889 -472143 -979 -498399 -1098 -530708 -1249 -553762 -13...
output:
254810274.4235500395
result:
ok found '254810274.4235500', expected '254810274.4235500', error '0.0000000'
Test #40:
score: 30
Accepted
time: 12ms
memory: 5360kb
input:
30000 0 0 -8940 -5 -33085 -27 -59867 -53 -86492 -79 -109768 -109 -130705 -139 -137599 -149 -167036 -193 -175992 -209 -205088 -262 -231732 -316 -253027 -361 -277001 -412 -306909 -477 -319514 -507 -337756 -557 -357495 -615 -372846 -661 -389281 -720 -409556 -800 -431984 -897 -439453 -931 -470069 -1095 ...
output:
252714495.2776288390
result:
ok found '252714495.2776288', expected '252714495.2776289', error '0.0000000'
Subtask #3:
score: 60
Accepted
Dependency #1:
100%
Accepted
Dependency #2:
100%
Accepted
Test #41:
score: 60
Accepted
time: 204ms
memory: 33804kb
input:
500000 0 0 -1984 -1 -3948 -2 -5906 -3 -7858 -4 -9782 -5 -11687 -6 -13584 -7 -15396 -8 -17164 -9 -18920 -10 -20662 -11 -22403 -12 -24141 -13 -25841 -14 -27533 -15 -29130 -16 -30717 -17 -32294 -18 -33869 -19 -35416 -20 -36958 -21 -38470 -22 -39949 -23 -41422 -24 -42890 -25 -44343 -26 -45731 -27 -47089...
output:
250546651.9010666609
result:
ok found '250546651.9010667', expected '250546651.9010667', error '0.0000000'
Test #42:
score: 60
Accepted
time: 189ms
memory: 33712kb
input:
500000 0 0 -1966 -1 -3887 -2 -5788 -3 -7676 -4 -9407 -5 -11076 -6 -12731 -7 -14285 -8 -15829 -9 -17361 -10 -18869 -11 -20358 -12 -21841 -13 -23323 -14 -24788 -15 -26134 -16 -27457 -17 -28627 -18 -29768 -19 -30831 -20 -31881 -21 -32923 -22 -33956 -23 -34977 -24 -36961 -26 -37931 -27 -39798 -29 -40731...
output:
250435395.8838684261
result:
ok found '250435395.8838684', expected '250435395.8838684', error '0.0000000'
Test #43:
score: 60
Accepted
time: 205ms
memory: 33732kb
input:
500000 0 0 -1951 -1 -3898 -2 -5828 -3 -7755 -4 -9668 -5 -11540 -6 -13405 -7 -15238 -8 -17036 -9 -18696 -10 -20310 -11 -21918 -12 -23504 -13 -25087 -14 -26643 -15 -28191 -16 -29738 -17 -31216 -18 -32637 -19 -34040 -20 -35437 -21 -36800 -22 -38134 -23 -39411 -24 -40685 -25 -41952 -26 -43163 -27 -44372...
output:
250864379.7991594076
result:
ok found '250864379.7991594', expected '250864379.7991594', error '0.0000000'
Test #44:
score: 60
Accepted
time: 194ms
memory: 33592kb
input:
500000 0 0 -1966 -1 -3814 -2 -5658 -3 -7499 -4 -9288 -5 -10993 -6 -12683 -7 -14368 -8 -16001 -9 -17554 -10 -19098 -11 -20624 -12 -22046 -13 -23375 -14 -24684 -15 -25923 -16 -27157 -17 -28373 -18 -29570 -19 -30755 -20 -31940 -21 -33061 -22 -34101 -23 -36091 -25 -37085 -26 -39050 -28 -41010 -30 -42924...
output:
250490528.3016454279
result:
ok found '250490528.3016454', expected '250490528.3016454', error '0.0000000'
Test #45:
score: 60
Accepted
time: 197ms
memory: 33604kb
input:
500000 0 0 -2000 -1 -3991 -2 -5959 -3 -7812 -4 -9659 -5 -11486 -6 -13244 -7 -14965 -8 -16685 -9 -18403 -10 -20112 -11 -21769 -12 -23425 -13 -25049 -14 -26661 -15 -28245 -16 -29805 -17 -31321 -18 -32778 -19 -34227 -20 -35648 -21 -37063 -22 -38451 -23 -39834 -24 -41189 -25 -42537 -26 -43862 -27 -45146...
output:
250484765.8163518906
result:
ok found '250484765.8163519', expected '250484765.8163519', error '0.0000000'
Test #46:
score: 60
Accepted
time: 205ms
memory: 33796kb
input:
500000 0 0 -1999 -1 -3969 -2 -5883 -3 -7768 -4 -9646 -5 -11522 -6 -13386 -7 -15249 -8 -17083 -9 -18886 -10 -20620 -11 -22334 -12 -24010 -13 -25682 -14 -27345 -15 -28999 -16 -30653 -17 -32305 -18 -33880 -19 -35447 -20 -36987 -21 -38504 -22 -39992 -23 -41471 -24 -42894 -25 -44296 -26 -45677 -27 -47055...
output:
250230916.1903697848
result:
ok found '250230916.1903698', expected '250230916.1903698', error '0.0000000'
Test #47:
score: 60
Accepted
time: 199ms
memory: 33684kb
input:
500000 0 0 -1957 -1 -3908 -2 -5811 -3 -7704 -4 -9571 -5 -11424 -6 -13257 -7 -15084 -8 -16829 -9 -18554 -10 -20227 -11 -21839 -12 -23449 -13 -25057 -14 -26543 -15 -28022 -16 -29490 -17 -30930 -18 -32353 -19 -33776 -20 -35142 -21 -36453 -22 -37757 -23 -39042 -24 -40309 -25 -41564 -26 -42760 -27 -43906...
output:
251523690.4624040425
result:
ok found '251523690.4624040', expected '251523690.4624040', error '0.0000000'
Test #48:
score: 60
Accepted
time: 199ms
memory: 33840kb
input:
500000 0 0 -1955 -1 -3908 -2 -5832 -3 -7723 -4 -9572 -5 -11411 -6 -13149 -7 -14815 -8 -16416 -9 -18007 -10 -19594 -11 -21168 -12 -22677 -13 -24178 -14 -25679 -15 -27176 -16 -28658 -17 -30129 -18 -31590 -19 -33032 -20 -34442 -21 -35816 -22 -37044 -23 -38207 -24 -39344 -25 -40420 -26 -41421 -27 -43334...
output:
251183725.5046660304
result:
ok found '251183725.5046660', expected '251183725.5046660', error '0.0000000'
Test #49:
score: 60
Accepted
time: 207ms
memory: 33736kb
input:
500000 0 0 -1997 -1 -3931 -2 -5858 -3 -7761 -4 -9578 -5 -11389 -6 -13134 -7 -14876 -8 -16612 -9 -18328 -10 -19994 -11 -21530 -12 -23041 -13 -24493 -14 -25929 -15 -27352 -16 -28721 -17 -30062 -18 -31354 -19 -32639 -20 -33919 -21 -35198 -22 -36458 -23 -37669 -24 -38874 -25 -40072 -26 -41248 -27 -42388...
output:
250578576.6313597560
result:
ok found '250578576.6313598', expected '250578576.6313598', error '0.0000000'
Test #50:
score: 60
Accepted
time: 198ms
memory: 33692kb
input:
500000 0 0 -1945 -1 -3846 -2 -5639 -3 -7414 -4 -9185 -5 -10917 -6 -12609 -7 -14296 -8 -15973 -9 -17613 -10 -19227 -11 -20729 -12 -22204 -13 -23675 -14 -25145 -15 -26563 -16 -27980 -17 -29273 -18 -30544 -19 -31789 -20 -33034 -21 -34257 -22 -35442 -23 -36592 -24 -37740 -25 -38877 -26 -39955 -27 -41029...
output:
250877196.0392704904
result:
ok found '250877196.0392705', expected '250877196.0392705', error '0.0000000'
Extra Test:
score: 0
Extra Test Passed