Submission #1531722
Source Code Expand
#include <iostream> #include <iomanip> #include <vector> #include <algorithm> #include <cstring> #include <map> #include <queue> #include <cmath> #define MOD 1000000007 #define ll long long #define ld long double using namespace std; struct ConvexHull { struct Point { double x,y; Point () {} Point (double _x, double _y) : x(_x), y(_y) {} bool operator < (const Point &a) const { return (x == a.x) ? (y < a.y) : (x < a.x); } }; double dot(Point a, Point b) { return a.x * b.x + a.y * b.y; } double cross(Point a, Point b) { return a.x * b.y - a.y * b.x; } double norm(Point a) { return sqrt(dot(a, a) * dot(a, a)); } Point sub(Point a, Point b) { return Point(a.x - b.x, a.y - b.y); } vector< Point > Pos; vector< Point > CHPos; int counter_clockwise(Point p0, Point p1, Point p2) { Point a = sub(p1, p0); Point b = sub(p2, p0); if (cross(a,b) > 1.0e-8) return 1; if (cross(a,b) < -1.0e-8) return -1; if (dot(a,b) < -1.0e-8) return 2; if (norm(a) < norm(b)) return 2; return 0; } void add_point(double x, double y) { Pos.push_back(Point(x, y)); } void build() { int n = (int) Pos.size(), k = 0; sort(Pos.begin(),Pos.end()); vector< Point > ch(2 * n); for (int i = 0; i < n; ch[k++] = Pos[i++]) { while (k >= 2 && counter_clockwise(ch[k-2], ch[k-1], Pos[i]) <= 0) --k; } for (int i = n - 2, t = k + 1; i >= 0; ch[k++] = Pos[i--]) { while (k >= t && counter_clockwise(ch[k-2], ch[k-1], Pos[i]) <= 0) --k; } copy(ch.begin(), ch.begin() + k - 1, back_inserter(CHPos)); } double diameter() { int n = (int) CHPos.size(); int is = 0, js = 0; for (int i = 1; i < n; i++) { if (CHPos[i].y > CHPos[is].y) is = i; if (CHPos[i].y < CHPos[js].y) js = i; } double maxd = norm(sub(CHPos[is], CHPos[js])); int i = is, maxi = is; int j = js, maxj = js; do{ if (cross(sub(CHPos[(i + 1) % n], CHPos[i]), sub(CHPos[(j + 1) % n], CHPos[j])) >= 0) { j = (j + 1) % n; } else { i = (i + 1) % n; } if(norm(sub(CHPos[i], CHPos[j])) > maxd) { maxd = norm(sub(CHPos[i], CHPos[j])); maxi = i, maxj = j; } } while (i != is || j != js); return sqrt(maxd); } int size() { return (int) CHPos.size(); } Point operator [] (int n) { return CHPos[n]; } }; int main(){ cin.tie(0); ios::sync_with_stdio(false); ll N; vector<ll> Ax,Ay,Bx,By; cin >> N; for(ll i =0;i<N;i++){ ll inx, iny; cin >> inx >> iny; Ax.push_back(inx); Ay.push_back(iny); } for(ll i =0;i< N;i++){ ll inx, iny; cin >> inx >> iny; Bx.push_back(inx); By.push_back(iny); } ConvexHull A; ConvexHull B; for(ll i = 0;i<N;i++){ A.add_point(Ax[i],Ay[i]); B.add_point(Bx[i],By[i]); } A.build(); B.build(); cout << fixed ; cout << setprecision(10) << B.diameter()/A.diameter() << endl; return 0; }
Submission Info
Submission Time | |
---|---|
Task | D - Big Bang |
User | ukohank517 |
Language | C++14 (GCC 5.4.1) |
Score | 100 |
Code Size | 3083 Byte |
Status | AC |
Exec Time | 69 ms |
Memory | 6708 KB |
Judge Result
Set Name | Sample | Subtask1 | Subtask2 | ||||||
---|---|---|---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 50 / 50 | 50 / 50 | ||||||
Status |
|
|
|
Set Name | Test Cases |
---|---|
Sample | sample_01.txt, sample_02.txt |
Subtask1 | sample_01.txt, sample_02.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt, subtask1_21.txt, subtask1_22.txt, subtask1_23.txt, subtask1_24.txt, subtask1_25.txt, subtask1_26.txt, subtask1_27.txt, subtask1_28.txt, subtask1_29.txt |
Subtask2 | sample_01.txt, sample_02.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt, subtask1_21.txt, subtask1_22.txt, subtask1_23.txt, subtask1_24.txt, subtask1_25.txt, subtask1_26.txt, subtask1_27.txt, subtask1_28.txt, subtask1_29.txt, subtask2_01.txt, subtask2_02.txt, subtask2_03.txt, subtask2_04.txt, subtask2_05.txt, subtask2_06.txt, subtask2_07.txt, subtask2_08.txt, subtask2_09.txt, subtask2_10.txt, subtask2_11.txt, subtask2_12.txt, subtask2_13.txt, subtask2_14.txt, subtask2_15.txt, subtask2_16.txt, subtask2_17.txt, subtask2_18.txt, subtask2_19.txt, subtask2_20.txt, subtask2_21.txt, subtask2_22.txt, subtask2_23.txt, subtask2_24.txt, subtask2_25.txt, subtask2_26.txt, subtask2_27.txt, subtask2_28.txt, subtask2_29.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
sample_01.txt | AC | 1 ms | 256 KB |
sample_02.txt | AC | 1 ms | 256 KB |
subtask1_01.txt | AC | 2 ms | 512 KB |
subtask1_02.txt | AC | 2 ms | 384 KB |
subtask1_03.txt | AC | 2 ms | 512 KB |
subtask1_04.txt | AC | 3 ms | 512 KB |
subtask1_05.txt | AC | 2 ms | 384 KB |
subtask1_06.txt | AC | 2 ms | 384 KB |
subtask1_07.txt | AC | 2 ms | 384 KB |
subtask1_08.txt | AC | 3 ms | 512 KB |
subtask1_09.txt | AC | 3 ms | 640 KB |
subtask1_10.txt | AC | 2 ms | 384 KB |
subtask1_11.txt | AC | 2 ms | 384 KB |
subtask1_12.txt | AC | 3 ms | 640 KB |
subtask1_13.txt | AC | 2 ms | 384 KB |
subtask1_14.txt | AC | 2 ms | 384 KB |
subtask1_15.txt | AC | 3 ms | 640 KB |
subtask1_16.txt | AC | 3 ms | 640 KB |
subtask1_17.txt | AC | 3 ms | 640 KB |
subtask1_18.txt | AC | 3 ms | 640 KB |
subtask1_19.txt | AC | 3 ms | 640 KB |
subtask1_20.txt | AC | 3 ms | 640 KB |
subtask1_21.txt | AC | 3 ms | 640 KB |
subtask1_22.txt | AC | 3 ms | 640 KB |
subtask1_23.txt | AC | 3 ms | 640 KB |
subtask1_24.txt | AC | 3 ms | 640 KB |
subtask1_25.txt | AC | 3 ms | 640 KB |
subtask1_26.txt | AC | 3 ms | 640 KB |
subtask1_27.txt | AC | 3 ms | 640 KB |
subtask1_28.txt | AC | 3 ms | 640 KB |
subtask1_29.txt | AC | 3 ms | 640 KB |
subtask2_01.txt | AC | 50 ms | 5820 KB |
subtask2_02.txt | AC | 3 ms | 512 KB |
subtask2_03.txt | AC | 11 ms | 1404 KB |
subtask2_04.txt | AC | 32 ms | 4208 KB |
subtask2_05.txt | AC | 2 ms | 256 KB |
subtask2_06.txt | AC | 9 ms | 1276 KB |
subtask2_07.txt | AC | 36 ms | 4464 KB |
subtask2_08.txt | AC | 52 ms | 5820 KB |
subtask2_09.txt | AC | 33 ms | 4336 KB |
subtask2_10.txt | AC | 46 ms | 5564 KB |
subtask2_11.txt | AC | 35 ms | 4464 KB |
subtask2_12.txt | AC | 57 ms | 6076 KB |
subtask2_13.txt | AC | 17 ms | 1996 KB |
subtask2_14.txt | AC | 42 ms | 4976 KB |
subtask2_15.txt | AC | 69 ms | 6708 KB |
subtask2_16.txt | AC | 68 ms | 6708 KB |
subtask2_17.txt | AC | 68 ms | 6708 KB |
subtask2_18.txt | AC | 69 ms | 6708 KB |
subtask2_19.txt | AC | 68 ms | 6708 KB |
subtask2_20.txt | AC | 68 ms | 6708 KB |
subtask2_21.txt | AC | 68 ms | 6708 KB |
subtask2_22.txt | AC | 67 ms | 6708 KB |
subtask2_23.txt | AC | 66 ms | 6708 KB |
subtask2_24.txt | AC | 68 ms | 6708 KB |
subtask2_25.txt | AC | 67 ms | 6708 KB |
subtask2_26.txt | AC | 67 ms | 6708 KB |
subtask2_27.txt | AC | 67 ms | 6708 KB |
subtask2_28.txt | AC | 68 ms | 6708 KB |
subtask2_29.txt | AC | 66 ms | 6708 KB |