Submission #3306224


Source Code Expand

#include <iostream>
#include <stdio.h>
#include <fstream>
#include <algorithm>
#include <string>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <vector>
#include <limits.h>
#include <math.h>
#include <functional>
#include <bitset>

#define repeat(i,n) for (long long i = 0; (i) < (n); ++ (i))
#define debug(x) cerr << #x << ": " << x << '\n'
#define debugArray(x,n) for(long long i = 0; (i) < (n); ++ (i)) cerr << #x << "[" << i << "]: " << x[i] << '\n'
#define debugArrayP(x,n) for(long long i = 0; (i) < (n); ++ (i)) cerr << #x << "[" << i << "]: " << x[i].first<< " " << x[i].second << '\n'

using namespace std;

typedef long long ll;
typedef pair<int,int> Pii;
typedef vector<int> vint;
typedef vector<ll> vll;
const ll INF = LLONG_MAX/10;
const ll MOD = 1e9+7;


int main(){
  double x[3],y[3];
  repeat(i,3){
    cin >> x[i] >> y[i];
  }
  double vx[3],vy[3];
  repeat(i,3){
    vx[i] = x[(i+2)%3]-x[(i+1)%3];
    vy[i] = y[(i+2)%3]-y[(i+1)%3];
  }
  double edge[3];
  repeat(i,3){
    edge[i] = sqrt(vx[i]*vx[i]+vy[i]*vy[i]);
  }
  debugArray(edge,3);
  double maxedge=max({edge[0],edge[1],edge[2]});
  debug(maxedge);
  double dis[3];
  repeat(i,3){
    dis[i] = abs(vy[i]*vx[(i+1)%3]-vx[i]*vy[(i+1)%3])/edge[i];
  }
  debugArray(dis,3);
  double low=0,high=dis[0];
  while(high-low>1e-9){
    double mid = (low+high)/2;
    double ratio=1;
    bool isok=true;
    repeat(i,3){
      ratio *= 1-(mid/(ratio*dis[i]));
      if(ratio<=0){
        isok=false;
        break;
      }
    }
    if(isok){
      isok &= ratio*maxedge>=2*mid;
    }
    if(isok){
      low=mid;
    }else{
      high=mid;
    }
  }
  printf("%.9lf",low);
}

Submission Info

Submission Time
Task B - Inscribed Bicycle
User hashiryo
Language C++14 (GCC 5.4.1)
Score 0
Code Size 1743 Byte
Status CE

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:50:53: error: call of overloaded ‘abs(double)’ is ambiguous
     dis[i] = abs(vy[i]*vx[(i+1)%3]-vx[i]*vy[(i+1)%3])/edge[i];
                                                     ^
In file included from /usr/include/c++/5/cstdlib:72:0,
                 from /usr/include/c++/5/ext/string_conversions.h:41,
                 from /usr/include/c++/5/bits/basic_string.h:5334,
                 from /usr/include/c++/5/string:52,
                 from /usr/include/c++/5/bits/locale_classes.h:40,
                 from /usr/include/c++/5/bits/ios_base.h:41,
                 from /usr/include/c++/5/ios:42,
                 from /usr/include/c++/5/ostream:38,
                 from /usr/include/c++/5/iostream:39,
                 from ./Main.cpp:1:
/usr/include/stdlib.h:775:12: note: candidate: int abs(int)
 extern int abs (int __x) __THROW __attribute__ ((__const__)) __wur;
            ^
In file included from /usr/include/c++/5/ext/string_conversions.h:41:0,
                ...