QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#799107#9576. Ordainer of Inexorable Judgment2317663977AC ✓1ms4500kbC++2322.6kb2024-12-04 22:14:012024-12-06 11:40:30

Judging History

你现在查看的是测评时间为 2024-12-06 11:40:30 的历史记录

  • [2024-12-23 14:28:40]
  • 自动重测本题所有获得100分的提交记录
  • 测评结果:AC
  • 用时:1ms
  • 内存:4436kb
  • [2024-12-23 14:23:26]
  • hack成功,自动添加数据
  • (/hack/1303)
  • [2024-12-06 11:40:30]
  • 自动重测本题所有获得100分的提交记录
  • 测评结果:100
  • 用时:1ms
  • 内存:4500kb
  • [2024-12-06 11:32:56]
  • hack成功,自动添加数据
  • (/hack/1271)
  • [2024-12-04 22:14:01]
  • 评测
  • 测评结果:100
  • 用时:1ms
  • 内存:4504kb
  • [2024-12-04 22:14:01]
  • 提交

answer

#include <iostream>
using namespace std;
#include <vector>
#include <algorithm>
#include <set>
#include <map>
#include <queue>
#include <cmath>
#include <cstring>

using ll = long long;

namespace Geo {
	template<typename T>
	class Point;

	template<typename T>
	class Line;

	template<typename T>
	class Polygon;

	template<typename T>
	class Circle;

	template<typename T>
	using Vector = Point<T>;

	template<typename T>
	using Segment = Line<T>;

	template<typename T>
	using PointSet = Polygon<T>;

	const double eps = 1e-9;
	const double PI = acos(-1.0);

	// 浮点数 x 的符号
	template<typename T>
	int sgn(T x) {
		if (fabs(x) < eps) return 0;
		return x > 0 ? 1 : -1;
	}

	// 比较两个浮点数
	template<typename T>
	int cmp(T x, T y) {
		if (fabs(x - y) < eps)return 0; // x == y,返回 0
		else return x < y ? -1 : 1; // x < y,返回 -1; x > y,返回 1
	}

	double radians(double degrees) {
		return degrees * PI / 180.0;
	}

	// 两点距离
	template<typename T>
	double dist(const Point<T>& A, const Point<T>& B) {
		return sqrt((A.x - B.x) * (A.x - B.x) + (A.y - B.y) * (A.y - B.y));
	}

	// 点积
	template<typename T>
	T dot(const Vector<T>& A, const Vector<T>& B) {
		// a · b = |a| |b| cos
		// 可用于判断两向量夹角
		return A.x * B.x + A.y * B.y;
	}

	// 叉积
	template<typename T>
	T cross(const Vector<T>& A, const Vector<T>& B) {
		// a · b = |a| |b| sin
		// 可以判断两向量的相对方向
		// 也能算两向量形成的平行四边形面积
		return A.x * B.y - A.y * B.x;
	}

	// 向量长度
	template<typename T>
	T len(const Vector<T>& A) {
		return sqrt(dot(A, A));
	}

	// 向量长度的平方
	template<typename T>
	T len2(const Vector<T>& A) {
		return dot(A, A);
	}

	// 两向量夹角
	template<typename T>
	double angle(const Vector<T>& A, const Vector<T>& B) {
		return acos(dot(A, B) / len(A) / len(B));
	}

	// 计算两向量构成的平行四边形有向面积
	// 三个点A、B、C,以A为公共点,得到2个向量B-A和C-A,它们构成的平行四边形
	template<typename T>
	T area_parallelogram(const Point<T>& A, const Point<T>& B, const Point<T>& C) {
		return abs(cross(B - A, C - A));
	}

	// 计算两向量构成的平行四边形面积
	// 两个有公共点的向量 A B 构成的平行四边形
	template<typename T>
	T area_parallelogram(const Vector<T>& A, const Vector<T>& B) {
		return abs(cross(A, B));
	}

	// 计算两向量构成的三角形面积
	// 三个点A、B、C,以A为公共点,得到2个向量B-A和C-A,它们构成的三角形
	template<typename T>
	T area_triangle(const Point<T>& A, const Point<T>& B, const Point<T>& C) {
		return abs(cross(B - A, C - A)) / 2.0;
	}

	// 计算两向量构成的三角形有向面积
	// 两个有公共点的向量 A B 构成的三角形
	template<typename T>
	T area_triangle(const Vector<T>& A, const Vector<T>& B) {
		return abs(cross(A, B)) / 2.0;
	}

	// 向量旋转	
	/*
		特殊情况是旋转90度:
		逆时针旋转90度:Rotate(A, pi/2),返回Vector(-A.y, A.x);
		顺时针旋转90度:Rotate(A, -pi/2),返回Vector(A.y, - A.x)。
	*/
	template<typename T>
	Vector<T> rotate(const Vector<T>& A, double rad) {
		return Vector<T>(A.x * cos(rad) - A.y * sin(rad), A.x * sin(rad) + A.y * cos(rad));
	}

	// 有时需要求单位法向量,即逆时针转90度,然后取单位值。
	template<typename T>
	Vector<T> normal(const Vector<T>& A) {
		return Vector<T>(-A.y / len(A), A.x / len(A));
	}

	// 两个向量是否平行或重合
	template<typename T>
	bool parallel(const Vector<T>& A, const Vector<T>& B) {
		return sgn(cross(A, B)) == 0; // 返回true表示平行或重合
	}

	// 点和直线的位置关系
	template<typename T>
	int point_line_relation(const Point<T>& p, const Line<T>& v) {
		int c = sgn(cross(p - v.p1, v.p2 - v.p1));
		if (c < 0)return 1;              // 1 :p在v的左边
		if (c > 0)return 2;              // 2 :p在v的右边
		return 0;                        // 0 :p在v上
	}

	// 点和线段的位置关系
	template<typename T>
	bool point_segment_relation(const Point<T>& p, const Line<T>& v) {
		// 0 点不在线段v上
		// 1 点在线段v上

		// 前者为 True 说明 p 和 线段 v 的一个端点连边,和 v 本身的夹角为 0,即 p 在 直线 v 上
		// 后者为 True 说明 p 和两端点形成平角,也就是说 p 在两端点之间
		return sgn(cross(p - v.p1, v.p2 - v.p1)) == 0 && sgn(dot(p - v.p1, p - v.p2)) <= 0;
	}

	// 点到直线的距离
	template<typename T>
	double point_line_dis(const Point<T>& p, const Line<T>& v) {
		// 实际上是算了 p 和 v 的一个端点连边,然后和 v 形成的平行四边形的面积,除底得到
		return fabs(cross(p - v.p1, v.p2 - v.p1)) / dist(v.p1, v.p2);
	}

	// 点在直线上的投影
	template<typename T>
	Point<T> point_line_proj(const Point<T>& p, const Line<T>& v) {
		double k = dot(v.p2 - v.p1, p - v.p1) / len2(v.p2 - v.p1);
		return v.p1 + (v.p2 - v.p1) * k;
	}

	// 点关于直线的对称点
	template<typename T>
	Point<T> point_line_symmetry(const Point<T>& p, const Line<T>& v) {
		Point<T> q = point_line_proj(p, v);
		return Point<T>(2 * q.x - p.x, 2 * q.y - p.y);
	}

	// 点到线段的距离
	template<typename T>
	double point_segment_dis(const Point<T>& p, const Segment<T>& v) {
		// 先检查点 p 到线段 v 的投影是否在线段 v 上
		// 如果在,就直接返回点 p 到直线 v 距离
		// 如果不在,就返回线段 v 两端点里 p 

		// p 先和 v 的两端点比较,看看是否两向量夹角 > 90
		if (sgn(dot(p - v.p1, v.p2 - v.p1)) < 0 || sgn(dot(p - v.p2, v.p1 - v.p2)) < 0)
			return min(dist(p, v.p1), dist(p, v.p2)); // 点的投影不在线段上
		return point_line_dis(p, v);           // 点的投影在线段上
	}

	// 叉积判断两条向量的位置关系,AB * AC,两向量共点
	template<typename T>
	int vector_vector_relation(const Vector<T>& v1, const Vector<T>& v2) {
		int sign = sgn(cross(v1, v2));
		if (sign == 0)return 0; // 共线
		if (sign > 0)return 1;  // v2 在 v1 的逆时针方向 
		if (sign < 0)return 2;  // v2 在 v1 的顺时针方向 
	}

	// 叉积判断两条直线的位置关系
	template<typename T>
	int line_line_relation(const Line<T>& v1, const Line<T>& v2) {
		if (sgn(cross(v1.p2 - v1.p1, v2.p2 - v2.p1)) == 0) {
			if (point_line_relation(v1.p1, v2) == 0) return 1;  // 1: 重合
			else return 0;                                      // 0: 平行
		}
		return 2;                                               // 2: 相交
	}

	// 两向量夹角类型
	template<typename T>
	int vector_vector_angle_type(const Vector<T>& v1, const Vector<T>& v2) {
		// 0:夹角度为 0
		// 1:夹角为锐角
		// 2:夹角为钝角
		// 3:夹角为平角,即方向相反
		auto _dot = dot(v1, v2);
		if (vector_vector_relation(v1, v2) == 0) { // 两向量共线
			if (sgn(_dot) > 0)return 0;
			else return 3;
		}
		else {
			if (sgn(_dot) > 0)return 1;
			else return 2;
		}
	}

	// 两条直线的交点
	template<typename T>
	Point<T> line_line_cross_point(const Point<T>& a, const Point<T>& b, const Point<T>& c, const Point<T>& d) {
		// Line1 : ab, Line2 : cd
		double s1 = cross(b - a, c - a);
		double s2 = cross(b - a, d - a);                    // 叉积有正负
		return Point<T>(c.x * s2 - d.x * s1, c.y * s2 - d.y * s1) / (s2 - s1);
	}

	// 两条直线的交点
	template<typename T>
	Point<T> line_line_cross_point(const Line<T>& x, const Line<T>& y) {
		// Line1 : ab, Line2 : cd
		auto a = x.p1;
		auto b = x.p2;
		auto c = y.p1;
		auto d = y.p2;
		double s1 = cross(b - a, c - a);
		double s2 = cross(b - a, d - a);                    // 叉积有正负
		return Point<T>(c.x * s2 - d.x * s1, c.y * s2 - d.y * s1) / (s2 - s1);
	}

	// 两个线段是否相交
	template<typename T>
	bool segment_segment_is_cross(const Point<T>& a, const Point<T>& b, const Point<T>& c, const Point<T>& d) {
		// Line1 : ab, Line2 : cd
		double c1 = cross(b - a, c - a), c2 = cross(b - a, d - a);
		double d1 = cross(d - c, a - c), d2 = cross(d - c, b - c);
		return sgn(c1) * sgn(c2) < 0 && sgn(d1) * sgn(d2) < 0;  // 1: 相交;0: 不相交
	}

	// 点和多边形的关系
	template<typename T>
	int point_polygon_relation(const Point<T>& pt, const Polygon<T>& p) {
		// 点pt,多边形 p
		int n = p.size();
		for (int i = 0; i < n; i++) { // 枚举点
			if (p[i] == pt)  return 3;  // 3:点在多边形的顶点上
		}
		for (int i = 0; i < n; i++) { // 枚举边
			Line<T> v = Line<T>(p[i], p[(i + 1) % n]);
			if (point_segment_relation(pt, v)) return 2; // 2:点在多边形的边上
		}

		// 通过射线法计算点是否在多边形内部 (具体原理可以看书)
		int num = 0;
		for (int i = 0; i < n; i++) {
			int j = (i + 1) % n;
			int c = sgn(cross(pt - p[j], p[i] - p[j]));
			int u = sgn(p[i].y - pt.y);
			int v = sgn(p[j].y - pt.y);
			if (c > 0 && u < 0 && v >= 0) num++;
			if (c < 0 && u >= 0 && v < 0) num--;
		}
		return num != 0; // 1:点在内部; 0:点在外部
	}

	// 计算多边形周长
	template<typename T>
	T polygon_perimeter(const Polygon<T>& p) {
		T ans = 0;
		int n = p.size();
		for (int i = 0; i < n; i++)
			ans += dist(p[i], p[(i + 1) % n]);
		return ans;
	}

	// 多边形的面积
	template<typename T>
	T polygon_area(const Polygon<T>& p) {
		/*
			注意面积存在 正负
			逆时针遍历点算出来就是正的
			顺时针遍历点算出来就是负的
		*/
		T area = 0;
		int n = p.size();
		for (int i = 0; i < n; i++)
			area += cross(p[i], p[(i + 1) % n]);
		return abs(area) / 2.0;
	}

	// 多边形的重心
	template<typename T>
	Point<T> polygon_center_point(const Polygon<T>& p) {        //求多边形重心
		Point<T> ans(0, 0);
		int n = p.size();
		if (polygon_area(p, n) == 0) return ans;
		for (int i = 0; i < n; i++)
			ans = ans + (p[i] + p[(i + 1) % n]) * cross(p[i], p[(i + 1) % n]);
		return ans / polygon_area(p, n) / 6;
	}

	/*
	   求凸包,凸包顶点放在ch中
	   凸多边形:是指所有内角大小都在 [0, 180] 范围内的简单多边形
	   凸包:在平面上能包含所有给定点的最小凸多边形叫做凸包
	*/
	template<typename T>
	Polygon<T> convex_hull(vector<Point<T>> p) {
		Polygon<T> ch;

		if (p.size() == 0 or p.size() == 1 or p.size() == 2) {
			for (auto& i : p) ch.push_back(i);
			return ch;
		}

		// Andrew 法:
		// 先对所有点排序
		// 求上下凸包 (查每个边相较于上一条边的拐弯方向)
		// 然后合并
		// 最后得到的点是按照原点的逆时针顺序的

		int n = p.size();
		n = unique(p.begin(), p.end()) - p.begin(); // 去除重复点    
		ch.resize(2 * n);
		sort(p.begin(), p.end());  // 对点排序:按 x 从小到大排序,如果 x 相同,按 y 排序    
		int v = 0;

		// 求下凸包,如果p[i]是右拐弯的,这个点不在凸包上,往回退
		for (int i = 0; i < n; i++) {
			while (v > 1 && sgn(cross(ch[v - 1] - ch[v - 2], p[i] - ch[v - 1])) <= 0)
				v--;
			ch[v++] = p[i];
		}

		// 求上凸包
		for (int i = n - 1, j = v; i >= 0; i--) {
			while (v > j && sgn(cross(ch[v - 1] - ch[v - 2], p[i] - ch[v - 1])) <= 0)
				v--;
			ch[v++] = p[i];
		}
		ch.resize(v - 1);
		return ch;
	}

	// 点和圆的关系,根据点到圆心的距离判断
	template<typename T>
	int point_circle_relation(const Point<T>& p, const Circle<T>& C) {
		double dst = dist(p, C.c);
		if (sgn(dst - C.r) < 0) return 0;       // 0: 点在圆内
		if (sgn(dst - C.r) == 0) return 1;      // 1: 圆上
		return 2;                               // 2: 圆外
	}

	// 直线和圆的关系,根据圆心到直线的距离判断
	template<typename T>
	int line_circle_relation(const Line<T>& v, const Circle<T>& C) {
		double dst = point_line_dis(C.c, v);
		if (sgn(dst - C.r) < 0) return 0;       // 0: 直线和圆相交
		if (sgn(dst - C.r) == 0) return 1;      // 1: 直线和圆相切
		return 2;                               // 2: 直线在圆外
	}

	// 线段和圆的关系,根据圆心到线段的距离判断
	template<typename T>
	int segment_circle_relation(const Segment<T> v, const Circle<T> C) {
		double dst = point_segment_dis(C.c, v);
		if (sgn(dst - C.r) < 0) return 0;       // 0: 线段在圆内
		if (sgn(dst - C.r) == 0) return 1;      // 1: 线段和圆相切
		return 2;                               // 2: 线段在圆外
	}

	//pa, pb是交点。返回值是交点个数
	template<typename T>
	int line_cross_circle(const Line<T>& v, const Circle<T>& C, Point<T>& p1, Point<T>& p2) {
		if (line_circle_relation(v, C) == 2)  return 0;    // 无交点
		Point<T> q = point_line_proj(C.c, v);              // 圆心在直线上的投影点
		double d = point_line_dis(C.c, v);                 // 圆心到直线的距离
		double k = sqrt(C.r * C.r - d * d);
		if (sgn(k) == 0) {                                 // 1个交点,直线和圆相切
			p1 = q;	p2 = q;	return 1;
		}
		Point<T> n = (v.p2 - v.p1) / len(v.p2 - v.p1);     // 单位向量
		p1 = q + n * k;  p2 = q - n * k;
		return 2;                                          // 2个交点
	}

	// 弧度制
	template<typename T>
	double circle_arc_area(const Circle<T>& c, const double& angle) {
		return c.area() * angle / 360.0;
	}

	template<typename T>
	double circle_area(const Circle<T>& c) {
		return c.area();
	}

	// atan2 极角排序,默认逆时针排序
	template<typename T>
	void angle_polar_sort_atan2(vector<Point<T>>& points, const Point<T>& reference = Point<T>(0, 0)) {
		sort(points.begin(), points.end(),
			[&](const Point<T>& a, const Point<T>& b)->bool
			{ return a.polar_angle(reference) < b.polar_angle(reference); });
	}

	// cross 极角排序,默认逆时针排序
	template<typename T>
	void angle_polar_sort_cross(vector<Point<T>>& points, const Point<T>& reference = Point<T>(0, 0)) {
		sort(points.begin(), points.end(),
			[&](Point<T> a, Point<T> b)->bool {
				a = a - reference; b = b - reference;
				if (a.quadrant() != b.quadrant())return a.quadrant() < b.quadrant();
				return sgn(cross(a, b)) > 0; // b 在 a 逆时针方向
			});
	}

	template<typename T>
	class Point {
	private:
		int id;

	public:
		T x, y;

		Point(T x = 0, T y = 0) : x(x), y(y), id(0) {}

		// this 点相较于 reference 点的极角
		// atan2 极角排序有时可能超时,有时反而更快
		double polar_angle(const Point<T>& reference = Point(0, 0)) const {
			return atan2(y - reference.y, x - reference.x);
		}

		T len() const { return sqrt(len2()); } // 向量长度
		T len2() const { return (*this) * (*this); } // 向量长度的平方

		// 求象限,包括了xy正负半轴
		// 可用于叉积法极角排序
		int quadrant() {
			if (x > 0 && y >= 0)return 1;      // 包含了 y 非负半轴
			else if (x <= 0 && y > 0)return 2; // 包含了 x 非正半轴
			else if (x < 0 && y <= 0)return 3; // 包含了 y 非正半轴
			else if (x >= 0 && y < 0)return 4; // 包含了 x 非负半轴
			else return 0; // 原点
		}

		bool hf() {
			return x > 0 || x == 0 && y > 0;
		}
		void set_id(int id) { this->id = id; }
		int get_id()const { return id; }

		Point operator- (const Point& B) const { return Point(x - B.x, y - B.y); }
		Point operator+ (const Point& B) const { return Point(x + B.x, y + B.y); }
		T operator^ (const Point<T>& B) const { return x * B.y - y * B.x; } // 叉积
		T operator* (const Point<T>& B) const { return x * B.x + y * B.y; } // 点积
		Point operator* (const T& B) const { return Point(x * B, y * B); }
		Point operator/ (const T& B) const { return Point(x / B, y / B); }
		bool operator< (const Point& B) const { return x < B.x || (x == B.x && y < B.y); }
		bool operator> (const Point& B) const { return x > B.x || (x == B.x && y > B.y); }
		bool operator== (const Point& B) const { return x == B.x && y == B.y; }
		bool operator!= (const Point& B) const { return !(*this == B); }

		friend ostream& operator<<(ostream& out, const Point& a) {
			out << '(' << a.x << ", " << a.y << ')';
			return out;
		}
	};

	template<typename T>
	class Line {
	public:
		Point<T> p1, p2;                         // 线上的两个点
		Line() {}
		Line(Point<T> p1, Point<T> p2) :p1(p1), p2(p2) {}
		Line(Point<T> p, double angle) {         // 根据一个点和倾斜角 angle 确定直线,0 <= angle < pi
			p1 = p;
			if (sgn(angle - PI / 2) == 0) { p2 = (p1 + Point<T>(0, 1)); }
			else { p2 = (p1 + Point<T>(1, tan(angle))); }
		}
		Line(double a, double b, double c) {     // ax + by + c = 0
			if (sgn(a) == 0) {
				p1 = Point<T>(0, -c / b);
				p2 = Point<T>(1, -c / b);
			}
			else if (sgn(b) == 0) {
				p1 = Point<T>(-c / a, 0);
				p2 = Point<T>(-c / a, 1);
			}
			else {
				p1 = Point<T>(0, -c / b);
				p2 = Point<T>(1, (-c - a) / b);
			}
		}
		friend ostream& operator<<(ostream& out, const Line<T>& a) {
			out << "[" << a.p1 << ", " << a.p2 << "]";
			return out;
		}

		// 计算斜率 k
		double k() const {
			if (sgn(p2.x - p1.x) == 0) { // 垂直线,斜率不存在
				throw runtime_error("Vertical line has undefined slope.");
			}
			return double(p2.y - p1.y) / (p2.x - p1.x);
		}

		// 计算截距 b
		double b() const {
			if (sgn(p2.x - p1.x) == 0) { // 垂直线,斜率不存在
				throw runtime_error("Vertical line does not have a y-intercept.");
			}
			double _k = k();
			return p1.y - _k * p1.x;
		}
	};

	template<typename T>
	class Polygon : public vector<Point<T>> {
	public:
		// 该类可以当点集用,也可以当多边形用。
		// 但注意传入点集不一定逆时针顺序,对于多边形可能需要极角排序

		Polygon() {}
		Polygon(int n) :vector<Point<T>>(n) {}

		// 多边形的周长
		T Perimeter() {
			T ans = 0;
			int n = this->size();
			for (int i = 0; i < n; i++)
				ans += dist((*this)[i], (*this)[(i + 1) % n]);
			return ans;
		}

		// 多边形的面积
		T Area() {
			T area = 0;
			int n = this->size();
			for (int i = 0; i < n; i++) {
				area += cross((*this)[i], (*this)[(i + 1) % n]);
			}
			return abs(area) / 2.0;
		}

		// atan2 极角排序,默认逆时针排序
		void Polar_angle_sort_atan2(const Point<T>& reference = Point<T>(0, 0)) {
			sort(this->begin(), this->end(),
				[&](const Point<T>& a, const Point<T>& b)->bool
				{ return a.polar_angle(reference) < b.polar_angle(reference); });
		}

		// cross 极角排序,默认逆时针排序
		void Polar_angle_sort_cross(const Point<T>& reference = Point<T>(0, 0)) {
			sort(this->begin(), this->end(),
				[&](Point<T> a, Point<T> b)->bool {
					a = a - reference; b = b - reference;
					if (a.quadrant() != b.quadrant())return a.quadrant() < b.quadrant();
					return sgn(cross(a, b)) > 0;
				});
		}

		friend ostream& operator<<(ostream& out, const Polygon<T>& a) {
			out << "[";
			for (int i = 0; i < a.size(); i++)
				out << a[i] << ",]"[i == a.size() - 1];
			return out;
		}
	};

	template<typename T>
	class Circle {
	public:
		Point<T> c;  // 圆心
		T r;         // 半径
		Circle() {}
		Circle(Point<T> c, T r) :c(c), r(r) {}
		Circle(T x, T y, T _r) { c = Point<T>(x, y); r = _r; }
		double area() const { return PI * r * r; }
		// 弧度制
		double arc_area(const double& angle) const { return area() * angle / 360.0; }
		friend ostream& operator<<(ostream& out, const Circle<T>& a) {
			out << "(" << a.c << ", " << a.r << ")";
			return out;
		}
	};
}
using namespace Geo;

const int N = 110;
int n, x, y, d, t;
vector<Point<double>> p;
Polygon<double> poly;

void solve()
{
	cin >> n >> x >> y >> d >> t;
	for (int i = 1;i <= n;i++)
	{
		int a, b;
		cin >> a >> b;
		p.push_back(Point<double>(a, b));
	}
	poly = convex_hull(p);
	poly.Polar_angle_sort_atan2();
	vector<Point<double>> qie;
	for (auto it : poly)
	{
		double jiao = asin(d / dist(it, Point<double>(0, 0)));
		auto dian = rotate(it, jiao);
		qie.push_back(dian);
		dian = rotate(it, -jiao);
		qie.push_back(dian);
	}

	angle_polar_sort_cross(qie);
	auto pl = *qie.begin(), pr = *qie.rbegin();
	for (int i = 0;i < qie.size() - 1;i++)
	{
		if (cross(qie[i], qie[i + 1]) <= 0)
		{
			pl = qie[i + 1];
			pr = qie[i];
			break;
		}
	}
	double jiajiao = angle(pl, pr);
	int ci = t / (2 * PI);
	double ans = ci * jiajiao;
	double nt = t - ci * 2 * PI;
	
	//cout << jiajiao << '\n';
	//cout << ci << '\n';
	//cout << ans << '\n';
	//cout << nt << '\n';

	double chushijiao = angle(Point<double>(x, y), Point<double>(1, 0));
	//cout << chushijiao << ' ' << Point<double>(x, y).quadrant() << '\n';
	if (Point<double>(x, y).quadrant() == 4)
		chushijiao = 2 * PI - chushijiao;
	else if (Point<double>(x, y).quadrant() == 3)
		chushijiao = 2 * PI - chushijiao;

	double ljiao = angle(pl, Point<double>(1, 0));
	//cout << ljiao << ' ' << pl.quadrant() << '\n';
	if (pl.quadrant() == 4)
		ljiao = 2 * PI - ljiao;
	else if (pl.quadrant() == 3)
		ljiao = 2 * PI - ljiao;
	double rjiao = angle(pr, Point<double>(1, 0));
	//cout << rjiao << ' ' << pr.quadrant() << '\n';
	if (pr.quadrant() == 4)
		rjiao = 2 * PI - rjiao;
	else if (pr.quadrant() == 3)
		rjiao = 2 * PI - rjiao;

	//cout << chushijiao << ' ' << ljiao << ' ' << rjiao << '\n';
 
	if (ljiao <= rjiao)
	{
		if (chushijiao <= ljiao)
		{
			if (chushijiao + nt >= rjiao) ans += rjiao - ljiao;
			else if (chushijiao + nt >= ljiao) ans += chushijiao + nt - ljiao;
		}
		else if (chushijiao > rjiao)
		{
			if (chushijiao + nt - 2 * PI >= rjiao) ans += rjiao - ljiao;
			else if (chushijiao + nt - 2 * PI >= ljiao) ans += chushijiao + nt - 2 * PI - ljiao;
		}
		else
		{
			if (chushijiao + nt >= rjiao) ans += rjiao - chushijiao;
			else ans += nt;
			if (chushijiao + nt - 2 * PI >= ljiao) ans += chushijiao + nt - 2 * PI - ljiao;
		}
	}
	else
	{
		if (chushijiao < ljiao && chushijiao > rjiao)
		{
			if (chushijiao + nt - 2 * PI >= rjiao) ans += rjiao + 2 * PI - ljiao;
			else if (chushijiao + nt >= ljiao) ans += chushijiao + nt - ljiao;
		}
		else if (chushijiao < PI)
		{
			if (chushijiao + nt >= rjiao) ans += rjiao - chushijiao;
			else ans += nt;
			if (chushijiao + nt >= ljiao) ans += chushijiao + nt - ljiao;
		}
		else
		{
			if (chushijiao + nt - 2 * PI >= rjiao) ans += rjiao - (chushijiao - 2 * PI);
			else ans += nt;
			if (chushijiao + nt - 2 * PI >= ljiao) ans += chushijiao + nt - 2 * PI - ljiao;
		}
	}
	//cout << ans << '\n';
	printf("%.10lf\n", ans);
}

int main()
{
	//ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	int T = 1;
	//cin >> T;
	while (T--)
	{
		solve();
	}
	return 0;
}

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

详细

Test #1:

score: 100
Accepted
time: 1ms
memory: 4256kb

input:

3 1 0 1 1
1 2
2 1
2 2

output:

1.0000000000

result:

ok found '1.0000000', expected '1.0000000', error '0.0000000'

Test #2:

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

input:

3 1 0 1 2
1 2
2 1
2 2

output:

1.5707963268

result:

ok found '1.5707963', expected '1.5707963', error '0.0000000'

Test #3:

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

input:

3 1 0 1 10000
1 2
2 1
2 2

output:

2500.7077522575

result:

ok found '2500.7077523', expected '2500.7077523', error '0.0000000'

Test #4:

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

input:

3 10000 10000 1 10000
10000 9999
10000 10000
9999 10000

output:

0.3842413013

result:

ok found '0.3842413', expected '0.3842413', error '0.0000000'

Test #5:

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

input:

3 -10000 -10000 10000 10000
-10000 -9999
-10000 -10000
-9999 -10000

output:

2500.2406700096

result:

ok found '2500.2406700', expected '2500.2406700', error '0.0000000'

Test #6:

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

input:

4 1 0 1 10000
-2 3400
-4 10000
-4 -10000
-2 -3400

output:

4999.2191154090

result:

ok found '4999.2191154', expected '4999.2191154', error '0.0000000'

Test #7:

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

input:

4 1 0 1 10000
-2 3300
-4 10000
-4 -10000
-2 -3300

output:

4999.2003918549

result:

ok found '4999.2003919', expected '4999.2003919', error '0.0000000'

Test #8:

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

input:

4 -3040 2716 2147 2
-9033 -8520
-8999 -8533
-8988 -8511
-9004 -8495

output:

0.3508300583

result:

ok found '0.3508301', expected '0.3508301', error '0.0000000'

Test #9:

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

input:

3 8168 -766 1549 1256
-3951 -6425
-3874 -6439
-3911 -6389

output:

84.8328611610

result:

ok found '84.8328612', expected '84.8328612', error '0.0000000'

Test #10:

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

input:

8 2977 -3175 8766 2
-4868 7759
-4867 7925
-4867 7950
-4886 7952
-4979 7953
-5048 7877
-5003 7761
-4936 7759

output:

0.3278606469

result:

ok found '0.3278606', expected '0.3278606', error '0.0000000'

Test #11:

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

input:

13 -1715 -4640 267 8651
272 6659
264 6660
208 6664
108 6625
107 6621
93 6564
90 6551
90 6485
124 6474
219 6477
283 6525
288 6591
286 6657

output:

153.5896227847

result:

ok found '153.5896228', expected '153.5896228', error '0.0000000'

Test #12:

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

input:

8 -9743 -7629 775 7
-194 981
-191 1720
-193 1845
-705 1929
-959 1950
-1131 1894
-1151 1604
-1031 1020

output:

2.0460062044

result:

ok found '2.0460062', expected '2.0460062', error '0.0000000'

Test #13:

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

input:

9 -6770 -1426 3491 1918
-2118 2886
-2063 3245
-2122 3709
-2129 3737
-2850 3718
-2984 3650
-3042 3462
-3028 2972
-2688 2888

output:

822.2411849637

result:

ok found '822.2411850', expected '822.2411850', error '0.0000000'

Test #14:

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

input:

12 1616 -7384 5256 10
-5607 2623
-5838 2843
-6117 2986
-6592 3169
-7129 3120
-7334 3069
-7406 2295
-7369 1712
-7091 1287
-6312 1252
-5596 1592
-5457 2088

output:

3.0387653771

result:

ok found '3.0387654', expected '3.0387654', error '0.0000000'

Test #15:

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

input:

10 -4546 5056 639 2996
4851 -3506
6078 -3725
6629 -3674
6775 -3296
6743 -2137
6585 -1866
5334 -1837
4950 -2020
4873 -2260
4852 -3240

output:

262.4239690789

result:

ok found '262.4239691', expected '262.4239691', error '0.0000000'

Test #16:

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

input:

20 4847 -6818 2502 2
-2164 -3844
-2453 -3826
-4654 -3818
-5073 -3829
-5212 -3833
-5828 -3921
-5889 -6065
-5896 -6716
-5877 -7349
-5855 -7457
-5619 -7711
-5485 -7786
-3743 -7809
-2345 -7747
-2075 -7682
-1960 -7364
-1900 -7015
-1901 -6391
-1922 -4091
-1968 -4028

output:

0.0000000000

result:

ok found '0.0000000', expected '0.0000000', error '-0.0000000'

Test #17:

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

input:

14 -1792 -5751 2349 4072
-3697 -4432
-4268 -4431
-6475 -4433
-7140 -4464
-7320 -4526
-7354 -5333
-7357 -5731
-7366 -7076
-7346 -7868
-7218 -8415
-4044 -8407
-3412 -8398
-3388 -7296
-3391 -4497

output:

758.9667683479

result:

ok found '758.9667683', expected '758.9667683', error '0.0000000'

Test #18:

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

input:

23 8820 -5943 927 1
-1319 -4435
-1321 -297
-1361 -149
-1379 -119
-1619 13
-6579 12
-7090 11
-7184 -5
-7209 -18
-7277 -62
-7316 -672
-7316 -5095
-7295 -5877
-7273 -5921
-7250 -5955
-6569 -5967
-5927 -5975
-4278 -5977
-2646 -5978
-1477 -5965
-1472 -5962
-1404 -5892
-1334 -5809

output:

0.0000000000

result:

ok found '0.0000000', expected '0.0000000', error '-0.0000000'

Test #19:

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

input:

22 -5664 7523 2588 8083
3456 2960
3446 2865
3433 2724
3432 615
3434 -1360
3446 -2929
3602 -2969
6204 -2972
8409 -2972
9227 -2969
9329 -2929
9375 -2890
9426 -2575
9432 2499
9432 2620
9390 2954
9386 2968
9277 3023
8340 3026
6809 3026
3634 3020
3600 3018

output:

3378.3117400794

result:

ok found '3378.3117401', expected '3378.3117401', error '0.0000000'

Test #20:

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

input:

19 -1886 -3232 561 6
-8846 -7186
-8842 -7658
-8705 -7660
-1521 -7660
-1248 -7658
-1048 -7654
-906 -7650
-877 -7643
-858 -7619
-846 -7598
-846 -1489
-847 -277
-851 311
-1001 332
-1072 340
-7480 340
-8844 337
-8845 332
-8846 -9

output:

2.2682333835

result:

ok found '2.2682334', expected '2.2682334', error '0.0000000'

Test #21:

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

input:

27 -8996 -3721 1431 7076
5671 -1552
3604 -1551
1370 -1551
-1106 -1552
-1845 -1553
-1945 -1582
-1964 -1649
-1981 -1924
-1981 -7875
-1980 -8365
-1979 -8628
-1977 -8988
-1974 -9316
-1963 -9548
-1871 -9550
-1288 -9551
5996 -9551
6006 -9455
6010 -9391
6012 -9343
6014 -9271
6015 -9144
6019 -7478
6019 -263...

output:

3442.5591737069

result:

ok found '3442.5591737', expected '3442.5591737', error '0.0000000'

Test #22:

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

input:

5 -7413 -6822 8371 4
-8435 1969
-8446 1918
-8438 1885
-8390 1892
-8422 1955

output:

0.3951577327

result:

ok found '0.3951577', expected '0.3951577', error '0.0000000'

Test #23:

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

input:

5 5998 6928 4304 9649
-9352 -3336
-9335 -3337
-9282 -3320
-9273 -3304
-9313 -3284

output:

1393.5958786549

result:

ok found '1393.5958787', expected '1393.5958787', error '0.0000000'

Test #24:

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

input:

13 7526 -9874 3812 9
2735 4538
2673 4561
2663 4563
2652 4563
2609 4539
2607 4535
2582 4483
2593 4434
2601 4415
2711 4396
2735 4405
2749 4417
2777 4472

output:

3.2992360263

result:

ok found '3.2992360', expected '3.2992360', error '0.0000000'

Test #25:

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

input:

9 1419 -6061 9067 634
-1331 -9405
-1206 -9456
-1165 -9391
-1157 -9359
-1184 -9294
-1252 -9276
-1312 -9299
-1329 -9336
-1336 -9354

output:

266.3903805944

result:

ok found '266.3903806', expected '266.3903806', error '0.0000000'

Test #26:

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

input:

15 -5029 6807 4505 5
5196 -3478
5116 -3556
5042 -3690
5048 -3936
5065 -4054
5286 -4238
5369 -4303
5565 -4330
5688 -4296
5868 -4016
5935 -3724
5909 -3628
5829 -3532
5702 -3457
5492 -3365

output:

1.6678521023

result:

ok found '1.6678521', expected '1.6678521', error '0.0000000'

Test #27:

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

input:

8 -6347 -8448 6719 6605
3802 9434
3837 9059
4354 9016
4552 9221
4542 9631
4330 9896
4110 9896
3900 9862

output:

1615.0782899692

result:

ok found '1615.0782900', expected '1615.0782900', error '0.0000000'

Test #28:

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

input:

12 -8728 4539 203 9
-3507 4626
-3495 4605
-3095 4278
-3072 4264
-2541 4110
-2080 4377
-1922 4677
-1746 5070
-1927 5624
-1971 5701
-3196 5842
-3461 5433

output:

0.3905393493

result:

ok found '0.3905393', expected '0.3905393', error '0.0000000'

Test #29:

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

input:

9 -599 -8427 1668 7471
5447 4490
6396 4800
6412 5020
6427 5800
5979 6214
5251 6192
4832 5791
4774 5592
4737 5033

output:

790.3949232559

result:

ok found '790.3949233', expected '790.3949233', error '0.0000000'

Test #30:

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

input:

26 4318 -8273 11 10
-2611 829
-2521 620
-2457 549
-2410 500
-2220 313
-1611 -93
-1294 -177
-210 -92
-76 -40
542 469
735 660
817 791
1022 1241
1107 1882
825 2680
641 2986
578 3043
94 3448
-229 3634
-1086 3713
-1501 3575
-2117 3250
-2441 2901
-2583 2720
-2858 2050
-2837 1715

output:

4.9856266895

result:

ok found '4.9856267', expected '4.9856267', error '0.0000000'

Test #31:

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

input:

28 -5212 -3307 3213 9807
-8651 3425
-8608 2890
-8399 2503
-8247 2230
-8135 2085
-8009 1935
-7593 1637
-7417 1512
-6970 1450
-6316 1388
-6030 1478
-5588 1674
-5323 1882
-4788 2794
-4747 2896
-4855 3889
-4949 4158
-5050 4422
-5377 4814
-5501 4953
-5989 5188
-6221 5243
-6566 5324
-7210 5255
-7874 4929
...

output:

2376.0286896841

result:

ok found '2376.0286897', expected '2376.0286897', error '0.0000000'

Test #32:

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

input:

53 4446 -5955 79 3
1828 -4250
1917 -4046
2082 -3505
2127 -3118
2114 -2868
2109 -2803
2070 -2361
1901 -1776
1770 -1497
1501 -1099
1323 -891
1232 -797
637 -337
-125 -45
-424 29
-600 55
-1256 7
-1705 -60
-2158 -234
-2276 -288
-2500 -447
-2858 -728
-3083 -924
-3263 -1179
-3534 -1612
-3648 -1840
-3707 -2...

output:

0.5527082689

result:

ok found '0.5527083', expected '0.5527083', error '0.0000000'

Test #33:

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

input:

59 1400 -4139 336 7647
-139 3085
-145 3609
-209 3969
-229 4049
-258 4152
-378 4474
-543 4810
-608 4909
-722 5059
-1056 5443
-1231 5599
-1668 5902
-2201 6131
-2281 6156
-2706 6251
-3150 6282
-3431 6256
-3667 6227
-4165 6087
-4377 6000
-4434 5967
-4785 5758
-5147 5484
-5426 5203
-5656 4847
-5848 4523
...

output:

2006.4089937545

result:

ok found '2006.4089938', expected '2006.4089938', error '0.0000000'

Test #34:

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

input:

100 1100 -2467 56 4
-594 -189
-315 -68
-92 52
141 210
332 340
580 548
659 617
802 762
977 960
1076 1086
1376 1558
1547 1885
1663 2169
1728 2372
1770 2522
1852 2932
1878 3157
1886 3377
1891 3590
1891 3634
1864 3927
1818 4281
1781 4430
1661 4832
1537 5157
1380 5466
1189 5773
1155 5821
1062 5949
915 61...

output:

2.1694457553

result:

ok found '2.1694458', expected '2.1694458', error '0.0000000'

Test #35:

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

input:

100 6873 -9062 270 5917
230 631
262 351
367 -155
397 -257
549 -653
607 -791
722 -1021
809 -1169
890 -1294
1128 -1604
1420 -1924
1513 -2010
1674 -2147
1841 -2285
2123 -2477
2431 -2641
3346 -2970
3658 -3030
4110 -3066
4671 -3036
4779 -3021
4961 -2995
5156 -2951
5316 -2910
5571 -2827
5850 -2716
6473 -2...

output:

2664.3740106691

result:

ok found '2664.3740107', expected '2664.3740107', error '0.0000000'

Test #36:

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

input:

5 2638 -4463 7250 10
-6121 4256
-6123 4245
-6100 4200
-6026 4229
-6068 4291

output:

4.3389197046

result:

ok found '4.3389197', expected '4.3389197', error '0.0000000'

Test #37:

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

input:

4 9037 -7470 4708 5338
307 6249
341 6173
391 6245
322 6264

output:

1471.6009272703

result:

ok found '1471.6009273', expected '1471.6009273', error '0.0000000'

Test #38:

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

input:

36 3764 6801 4323 8
-7120 -4568
-7129 -4567
-7146 -4567
-7151 -4568
-7192 -4583
-7200 -4589
-7206 -4594
-7219 -4609
-7225 -4619
-7228 -4625
-7234 -4645
-7236 -4653
-7236 -4677
-7233 -4692
-7229 -4703
-7210 -4733
-7187 -4752
-7171 -4759
-7154 -4764
-7143 -4765
-7107 -4761
-7104 -4760
-7093 -4755
-708...

output:

1.0900475441

result:

ok found '1.0900475', expected '1.0900475', error '0.0000000'

Test #39:

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

input:

35 -5028 9347 1180 2618
9370 8586
9398 8567
9403 8565
9417 8561
9426 8559
9437 8559
9495 8576
9514 8594
9524 8608
9530 8620
9536 8639
9537 8649
9537 8659
9533 8688
9520 8714
9499 8736
9493 8741
9481 8748
9476 8750
9455 8756
9421 8756
9413 8754
9393 8747
9372 8733
9361 8721
9357 8716
9352 8708
9348 8...

output:

83.2630859152

result:

ok found '83.2630859', expected '83.2630859', error '0.0000000'

Test #40:

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

input:

45 -6843 -8564 8658 4
7836 -6692
7842 -6709
7932 -6858
7951 -6879
8093 -6981
8149 -7004
8155 -7006
8226 -7024
8296 -7030
8458 -7007
8504 -6991
8555 -6965
8602 -6935
8666 -6880
8673 -6873
8723 -6810
8733 -6795
8756 -6753
8783 -6687
8786 -6679
8787 -6676
8799 -6626
8804 -6598
8808 -6514
8797 -6424
879...

output:

2.0909677410

result:

ok found '2.0909677', expected '2.0909677', error '0.0000000'

Test #41:

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

input:

46 -8269 7894 301 2780
6898 -4472
6908 -4463
6943 -4428
6980 -4382
6993 -4364
7071 -4134
7072 -4124
7072 -4067
7068 -4026
7063 -3994
7019 -3869
6923 -3737
6893 -3709
6831 -3665
6809 -3653
6681 -3605
6666 -3602
6622 -3596
6580 -3594
6521 -3596
6404 -3623
6354 -3644
6328 -3658
6272 -3695
6190 -3772
61...

output:

91.5234882443

result:

ok found '91.5234882', expected '91.5234882', error '0.0000000'

Test #42:

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

input:

48 -252 983 5831 6
-5338 7492
-5368 7454
-5410 7392
-5433 7355
-5441 7340
-5485 7251
-5514 7175
-5552 7027
-5553 7020
-5565 6909
-5566 6833
-5561 6749
-5515 6541
-5504 6509
-5502 6504
-5325 6205
-5285 6161
-5272 6148
-5249 6126
-5147 6042
-5087 6003
-5069 5992
-4954 5935
-4926 5923
-4696 5865
-4692 ...

output:

1.6704668681

result:

ok found '1.6704669', expected '1.6704669', error '0.0000000'

Test #43:

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

input:

47 9429 -5628 7613 730
5762 6533
5787 6456
5889 6255
5959 6161
5974 6143
6148 5987
6233 5934
6539 5822
6646 5808
6670 5806
6835 5811
6896 5820
7061 5863
7281 5974
7432 6099
7501 6176
7559 6255
7649 6425
7657 6445
7708 6631
7723 6760
7723 6828
7666 7137
7593 7297
7584 7313
7534 7389
7358 7577
7280 76...

output:

260.6206739902

result:

ok found '260.6206740', expected '260.6206740', error '0.0000000'

Test #44:

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

input:

100 -2137 931 2332 5
5880 -205
5950 -250
6222 -388
6257 -403
6345 -435
6421 -460
6503 -482
6587 -501
6632 -510
6756 -529
6838 -537
6889 -540
7289 -520
7398 -501
7505 -475
7596 -449
7624 -440
7647 -432
7816 -364
8029 -252
8052 -238
8217 -123
8277 -74
8406 44
8486 129
8550 205
8562 220
8730 470
8818 6...

output:

1.3027386395

result:

ok found '1.3027386', expected '1.3027386', error '0.0000000'

Test #45:

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

input:

100 5783 -862 898 1351
-6284 2487
-6240 2445
-6201 2410
-6141 2360
-6075 2310
-5935 2216
-5707 2095
-5507 2018
-5504 2017
-5393 1985
-5246 1952
-5042 1926
-4942 1921
-4835 1921
-4584 1944
-4539 1952
-4500 1959
-4471 1965
-4302 2009
-4122 2074
-3978 2141
-3905 2180
-3852 2211
-3772 2262
-3618 2377
-3...

output:

206.6675109491

result:

ok found '206.6675109', expected '206.6675109', error '0.0000000'

Test #46:

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

input:

100 -2659 7645 1903 10
6882 1385
6772 1450
6598 1541
6538 1569
6180 1705
6087 1732
5852 1786
5726 1807
5651 1817
5513 1830
5449 1834
5221 1837
5054 1828
5041 1827
4601 1756
4258 1652
3912 1499
3500 1240
3381 1146
3349 1119
3209 992
3148 931
2905 648
2681 306
2655 259
2490 -104
2467 -167
2324 -761
23...

output:

2.9425298532

result:

ok found '2.9425299', expected '2.9425299', error '0.0000000'

Test #47:

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

input:

100 -4230 -5718 5152 1802
-4647 8707
-4898 8858
-4911 8865
-4971 8896
-5205 9001
-5481 9096
-5520 9107
-5546 9114
-5861 9180
-6520 9208
-6585 9203
-6595 9202
-6724 9187
-6785 9178
-6961 9145
-7132 9102
-7511 8967
-7620 8917
-7717 8868
-7943 8736
-8016 8687
-8052 8662
-8130 8605
-8309 8458
-8329 8440...

output:

669.5018053859

result:

ok found '669.5018054', expected '669.5018054', error '0.0000000'

Test #48:

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

input:

100 -2000 -8717 1 2
-3887 -7882
-3085 -8035
-3036 -8039
-3022 -8040
-2351 -8031
-2056 -7991
-2039 -7988
-1788 -7935
-1648 -7898
-1182 -7734
-1009 -7656
-895 -7599
-872 -7587
-782 -7538
-754 -7522
-556 -7401
-293 -7214
-116 -7069
133 -6833
258 -6698
291 -6660
517 -6372
660 -6157
668 -6144
800 -5912
9...

output:

0.5889866079

result:

ok found '0.5889866', expected '0.5889866', error '0.0000000'

Test #49:

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

input:

100 -8471 -2641 1085 4758
-7454 -238
-7384 -290
-6801 -642
-6667 -705
-6251 -864
-5930 -952
-5657 -1005
-5624 -1010
-4751 -1044
-4605 -1031
-4596 -1030
-4476 -1015
-4435 -1009
-3688 -821
-3415 -712
-3355 -685
-2738 -330
-2604 -232
-2335 -7
-2159 164
-1872 495
-1759 648
-1750 661
-1593 905
-1398 1277...

output:

1599.7660698050

result:

ok found '1599.7660698', expected '1599.7660698', error '0.0000000'

Test #50:

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

input:

100 8019 7414 959 2
266 5953
253 5916
164 5645
106 5452
38 5120
2 4933
-54 4332
-48 3976
-12 3565
42 3243
80 3065
139 2813
161 2745
208 2601
312 2303
382 2151
623 1672
719 1515
738 1484
992 1134
1431 632
1957 189
2419 -126
2540 -191
2980 -403
3346 -546
3365 -552
3681 -649
3957 -714
3968 -716
4391 -7...

output:

1.1226569889

result:

ok found '1.1226570', expected '1.1226570', error '0.0000000'

Test #51:

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

input:

100 9678 8745 355 2777
-9146 3450
-9132 3167
-9127 3123
-9032 2545
-8802 1776
-8561 1275
-8424 1029
-8155 620
-7675 65
-7606 -2
-7079 -440
-6742 -658
-6540 -777
-6271 -912
-6088 -997
-5926 -1058
-5688 -1144
-5410 -1215
-5033 -1309
-4636 -1360
-4465 -1370
-4220 -1383
-4187 -1383
-3965 -1381
-3842 -13...

output:

1179.7783209025

result:

ok found '1179.7783209', expected '1179.7783209', error '0.0000000'

Test #52:

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

input:

100 3624 3408 5 4
-7122 -6161
-6556 -6434
-6346 -6514
-6134 -6584
-5982 -6628
-5816 -6670
-5325 -6760
-5044 -6789
-4407 -6796
-4260 -6786
-4010 -6759
-3820 -6730
-3513 -6667
-3285 -6607
-3062 -6537
-3033 -6527
-2941 -6494
-2098 -6090
-1296 -5492
-963 -5157
-341 -4303
-253 -4144
-241 -4121
-62 -3741
...

output:

2.7856342681

result:

ok found '2.7856343', expected '2.7856343', error '0.0000000'

Test #53:

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

input:

100 -9963 7022 699 1618
-6958 -1122
-6918 -1141
-5908 -1486
-4633 -1606
-4297 -1583
-3704 -1486
-3434 -1417
-3279 -1370
-3200 -1344
-3154 -1328
-3020 -1279
-2966 -1258
-2707 -1147
-2660 -1125
-2391 -987
-2090 -807
-1389 -259
-1089 47
-716 515
-68 1794
-27 1921
30 2121
37 2148
68 2276
149 2722
184 30...

output:

678.4314433597

result:

ok found '678.4314434', expected '678.4314434', error '0.0000000'

Extra Test:

score: 0
Extra Test Passed