#include "nice_lines.h"
#include <bits/stdc++.h>
using namespace std;
template<class T>
struct Point{
T x, y;
Point (T _x=0, T _y=0){
x=_x; y=_y;
}
bool operator<(Point a){ return tie(x, y)<tie(a.x, a.y); }
bool operator==(Point a){ return tie(x, y)==tie(a.x, a.y); }
Point operator+(Point a){ return Point(x+a.x, y+a.y); }
Point operator-(Point a){ return Point(x-a.x, y-a.y); }
Point operator*(T a){ return Point(x*a, y*a); }
Point operator/(T a){ return Point(x/a, y/a); }
T dot(Point a){ return x*a.x+y*a.y; }
T dot(Point a, Point b){ return (a-*this).dot(b-*this); }
T cross(Point a){ return x*a.y-y*a.x; }
T cross(Point a, Point b){ return (a-*this).cross(b-*this); }
T dist2(){ return x*x+y*y; }
long double dist(){ return sqrt(dist2()); }
};
const long double eps=1e-7;
using pt=Point<long double>;
long double line_point_dist(pt a, pt b, pt c){
return abs(a.cross(b, c))/(a-b).dist();
}
mt19937 rng(69420);
long double rand(long double l, long double r){
return uniform_real_distribution<long double>(l, r)(rng);
}
pair<int, int> line_from_points(pt a, pt b){
long double slope=round((b.y-a.y)/(b.x-a.x));
return {(int)(round(slope)), (int)(round(a.y-a.x*slope))};
}
void solve(int subtask_id, int N) {
auto f=[&](long double t) -> long double {
return query(2e4, t);
};
vector<int> va, vb;
auto dnc=[&](auto self, long double l, long double r, long double fl, long double fr){
long double mid=(l+r)/2;
long double fmid=f(mid);
if (abs((fl+fr)/2-fmid)<eps) return;
if ((r-l)<1){
long double c=(f(r+0.1)-fr-fl+f(l-0.1))/2;
long double d=sqrtl(max<long double>(0.0, 0.1*0.1-c*c));
int a=round(d/c);
if (mid<-eps) a=-a;
int b=round(mid-(2e4)*a);
va.push_back(a);
vb.push_back(b);
return;
}
self(self, l, mid, fl, fmid);
self(self, mid, r, fmid, fr);
return;
};
long double l=-2.2e8+rand(1, 10), r=2.2e8-rand(1, 10);
dnc(dnc, l, r, f(l), f(r));
the_lines_are(va, vb);
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
444 KB |
Output is correct |
2 |
Correct |
1 ms |
436 KB |
Output is correct |
3 |
Correct |
1 ms |
436 KB |
Output is correct |
4 |
Correct |
1 ms |
692 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
696 KB |
Output is correct |
2 |
Correct |
1 ms |
440 KB |
Output is correct |
3 |
Correct |
1 ms |
436 KB |
Output is correct |
4 |
Correct |
2 ms |
440 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
692 KB |
Output is correct |
2 |
Correct |
2 ms |
444 KB |
Output is correct |
3 |
Correct |
2 ms |
440 KB |
Output is correct |
4 |
Correct |
2 ms |
692 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Partially correct |
40 ms |
684 KB |
Output is partially correct |
2 |
Partially correct |
31 ms |
692 KB |
Output is partially correct |
3 |
Partially correct |
29 ms |
448 KB |
Output is partially correct |
4 |
Partially correct |
35 ms |
692 KB |
Output is partially correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Partially correct |
12 ms |
756 KB |
Output is partially correct |
2 |
Incorrect |
14 ms |
436 KB |
Incorrect |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Partially correct |
40 ms |
684 KB |
Output is partially correct |
2 |
Partially correct |
31 ms |
692 KB |
Output is partially correct |
3 |
Partially correct |
29 ms |
448 KB |
Output is partially correct |
4 |
Partially correct |
35 ms |
692 KB |
Output is partially correct |
5 |
Partially correct |
12 ms |
756 KB |
Output is partially correct |
6 |
Incorrect |
14 ms |
436 KB |
Incorrect |
7 |
Halted |
0 ms |
0 KB |
- |