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
AC × 2
AC × 31
AC × 60
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