Language: C++

#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<climits>
#include<iomanip>
#include<cstdio>
#include<vector>
#include<queue>
#include<stack>
#include<cmath>
#include<list>
#include<map>
#include<set>
using namespace std;

typedef vector<int> VI;
typedef vector<VI> VVI;
typedef vector<string> VS;
typedef stack<int> SI;
typedef queue<int> QI;
typedef list<int> LI;
typedef pair<int,int> PII;
typedef long long LL;

#define d(x)  cout<<#x<<" = "<<(x)<<endl;
#define ALL(a)  (a).begin(),(a).end()
#define RALL(a) (a).rbegin(), (a).rend()
#define PB push_back
#define MP make_pair
#define EMP empty()
#define SZ(a) int((a).size())
#define EACH(i,c) for(typeof((c).begin()) i=(c).begin(); i!=(c).end(); ++i)
#define REACH(i,c) for(typeof((c).rbegin()) i=(c).rbegin(); i!=(c).rend(); ++i)
#define EXIST(s,e) ((s).find(e)!=(s).end())
#define SORT(c,n) sort(c,c+n)
#define VSORT(c) sort((c).begin(),(c).end())
#define FOR(i,a,b) for(int i=(a);i<(b);++i)
#define REP(i,n)  FOR(i,0,n)
#define DFOR(i,b,a) for(int i=(b)-1;i>=(a);--i)
#define DREP(i,n) DFOR(i,n,0)
#define INF 1000000000

const double EPS = 1e-10;
const double PI  = acos(-1.0);
////////////////////////////////////////////////
struct vtr{double x;double y;};


double absvtr(vtr a)
{
	return sqrt(a.x*a.x+a.y*a.y);
}
double dotp(vtr a,vtr b)
{
	return a.x*b.x+a.y*b.y;
}
double abscrossp(vtr a,vtr b)
{
	return abs(a.x*b.y-a.y*b.x);
}
vtr plusvtr(vtr a,vtr b)
{
	vtr c;
	c.x=a.x+b.x;
	c.y=a.y+b.y;
	return c;
}
vtr minusvtr(vtr a,vtr b)
{
	vtr c;
	c.x=a.x-b.x;
	c.y=a.y-b.y;
	return c;
}

int main()
{
	int n;cin>>n;
	vtr p[4];
	cout<<fixed<<setprecision(10);
	REP(i,n)
	{
		REP(j,4)cin>>p[j].x>>p[j].y;
		double a,b,c,d;
		if(dotp(minusvtr(p[1],p[0]),minusvtr(p[2],p[0])>0&&dotp(minusvtr(p[0],p[1]),minusvtr(p[2],p[1])>0)
		{
			a=abscrossp(minusvtr(p[1],p[0]),minusvtr(p[2],p[0]))/absvtr(minusvtr(p[1],p[0]));
		}
		else
		{
			a=min(abs(minusvtr(p[2],p[0])),abs(minusvtr(p[2],p[1])));
		}
		
		if(dotp(minusvtr(p[1],p[0]),minusvtr(p[3],p[0])>0&&dotp(minusvtr(p[0],p[1]),minusvtr(p[3],p[1])>0)
		{
			a=abscrossp(minusvtr(p[1],p[0]),minusvtr(p[3],p[0]))/absvtr(minusvtr(p[1],p[0]));
		}
		else
		{
			a=min(abs(minusvtr(p[3],p[0])),abs(minusvtr(p[3],p[1])));
		}
		
		if(dotp(minusvtr(p[3],p[2]),minusvtr(p[0],p[2])>0&&dotp(minusvtr(p[2],p[3]),minusvtr(p[0],p[3])>0)
		{
			a=abscrossp(minusvtr(p[3],p[2]),minusvtr(p[0],p[2]))/absvtr(minusvtr(p[3],p[2]));
		}
		else
		{
			a=min(abs(minusvtr(p[0],p[2])),abs(minusvtr(p[0],p[3])));
		}
		
		if(dotp(minusvtr(p[3],p[2]),minusvtr(p[1],p[2])>0&&dotp(minusvtr(p[2],p[3]),minusvtr(p[1],p[3])>0)
		{
			a=abscrossp(minusvtr(p[3],p[2]),minusvtr(p[1],p[2]))/absvtr(minusvtr(p[3],p[2]));
		}
		else
		{
			a=min(abs(minusvtr(p[1],p[2])),abs(minusvtr(p[1],p[3])));
		}
		cout<<min(min(a,b),min(c,d))<<endl;
	}
	return 0;
}

Compiler output:
a.cc: In function 'int main()':
a.cc:86:64: error: no match for 'operator>' (operand types are 'vtr' and 'int')
   86 |                 if(dotp(minusvtr(p[1],p[0]),minusvtr(p[2],p[0])>0&&dotp(minusvtr(p[0],p[1]),minusvtr(p[2],p[1])>0)
      |                                             ~~~~~~~~~~~~~~~~~~~^~
      |                                                     |           |
      |                                                     vtr         int
In file included from /usr/include/c++/14/bits/stl_algobase.h:64,
                 from /usr/include/c++/14/algorithm:60,
                 from a.cc:1:
/usr/include/c++/14/bits/stl_pair.h:1058:5: note: candidate: 'template<class _T1, class _T2> constexpr bool std::operator>(const pair<_T1, _T2>&, const pair<_T1, _T2>&)'
 1058 |     operator>(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
      |     ^~~~~~~~
/usr/include/c++/14/bits/stl_pair.h:1058:5: note:   template argument deduction/substitution failed:
a.cc:86:65: note:   'vtr' is not derived from 'const std::pair<_T1, _T2>'
   86 |                 if(dotp(minusvtr(p[1],p[0]),minusvtr(p[2],p[0])>0&&dotp(minusvtr(p[0],p[1]),minusvtr(p[2],p[1])>0)
      |                                                                 ^
In file included from /usr/include/c++/14/bits/stl_algobase.h:67:
/usr/include/c++/14/bits/stl_iterator.h:462:5: note: candidate: 'template<class _Iterator> constexpr bool std::operator>(const reverse_iterator<_Iterator>&, const reverse_iterator<_Iterator>&)'
  462 |     operator>(const reverse_iterator<_Iterator>& __x,
      |     ^~~~~~~~
/usr/include/c++/14/bits/stl_iterator.h:462:5: note:   template argument deduction/substitution failed:
a.cc:86:65: note:   'vtr' is not derived from 'const std::reverse_iterator<_Iterator>'
   86 |                 if(dotp(minusvtr(p[1],p[0]),minusvtr(p[2],p[0])>0&&dotp(minusvtr(p[0],p[1]),minusvtr(p[2],p[1])>0)
      |                                                                 ^
/usr/include/c++/14/bits/stl_iterator.h:507:5: note: candidate: 'template<class _IteratorL, class _IteratorR> constexpr bool std::operator>(const reverse_iterator<_Iterator>&, const reverse_iterator<_IteratorR>&)'
  507 |     operator>(const reverse_iterator<_IteratorL>& __x,
      |     ^~~~~~~~
/usr/include/c++/14/bits/stl_iterator.h:507:5: note:   template argument deduction/substitution failed:
a.cc:86:65: note:   'vtr' is not derived from 'const std::reverse_iterator<_Iterator>'
   86 |                 if(dotp(minusvtr(p[1],p[0]),minusvtr(p[2],p[0])>0&&dotp(minusvtr(p[0],p[1]),minusvtr(p[2],p[1])>0)
      |                                                                 ^
/usr/include/c++/14/bits/stl_iterator.h:1714:5: note: candidate: 'template<class _IteratorL, class _IteratorR> constexpr bool std::operator>(const move_iterator<_IteratorL>&, const move_iterator<_IteratorR>&)'
 1714 |     operator>(const move_iterator<_IteratorL>& __x,
      |     ^~~~~~~~
/usr/include/c++/14/bits/stl_iterator.h:1714:5: note:   template argument deduction/substitution failed:
a.cc:86:65: note:   'vtr' is not derived from 'const std::move_iterator<_IteratorL>'
   86 |                 if(dotp(minusvtr(p[1],p[0]),minusvtr(p[2],p[0])>0&&dotp(minusvtr(p[0],p[1]),minusvtr(p[2],p[1])>0)
      |                                                                 ^
/usr/include/c++/14/bits/stl_iterator.h:1774:5: note: candidate: 'template<class _Iterator> constexpr bool std::operator>(const move_iterator<_IteratorL>&, const move_iterator<_IteratorL>&)'
 1774 |     operator>(const move_iterator<_Iterator>& __x,
      |     ^~~~~~~~
/usr/include/c++/14/bits/stl_iterator.h:1774:5: note:   template argument deduction/substitution failed:
a.cc:86:65: note:   'vtr' is not derived from 'const std::move_iterator<_IteratorL>'
   86 |                 if(dotp(minusvtr(p[1],p[0]),minusvtr(p[2],p[0])>0&&dotp(minusvtr(p[0],p[1]),minusvtr(p[2],p[1])>0)
      |                                                                 ^
In file included from /usr/include/c++/14/bits/basic_string.h:47,
                 from /usr/include/c++/14/string:54,
                 from /usr/include/c++/14/bits/locale_classes.h:40,
                 from /usr/include/c++/14/bits/ios_base.h:41,
                 from /usr/include/c++/14/ios:44,
                 from /usr/include/c++/14/ostream:40,
                 from /usr/include/c++/14/iostream:41,
                 from a.cc:2:
/usr/include/c++/14/string_view:695:5: note: candidate: 'template<class _CharT, class _Traits> constexpr bool std::operator>(basic_string_view<_CharT, _Traits>, basic_string_view<_CharT, _Traits>)'
  695 |     operator> (basic_string_view<_CharT, _Traits> __x,
      |     ^~~~~~~~
/usr/include/c++/14/string_view:695:5: note:   template argument deduction/substitution failed:
a.cc:86:65: note:   'vtr' is not derived from 'std::basic_string_view<_CharT, _Traits>'
   86 |                 if(dotp(minusvtr(p[1],p[0]),minusvtr(p[2],p[0])>0&&dotp(minusvtr(p[0],p[1]),minusvtr(p[2],p[1])>0)
      |                                                                 ^
/usr/include/c++/14/string_view:702:5: note: candidate: 'template<class _CharT, class _Traits> constexpr bool std::operator>(basic_string_view<_CharT, _Traits>, __type_identity_t<basic_string_view<_CharT, _Traits> >)'
  702 |     operator> (basic_string_view<_CharT, _Traits> __x,
      |     ^~~~~~~~
/usr/include/c++/14/string_view:702:5: note:   template argument deduction/substitution failed:
a.cc:86:65: note:   'vtr' is not derived from 'std::basic_string_view<_CharT, _Traits>'
   86 |                 if(dotp(minusvtr(p[1],p[0]),minusvtr(p[2],p[0])>0&&dotp(minusvtr(p[0],p[1]),minusvtr(p[2],p[1])>0)
      |                                                                 ^
/usr/include/c++/14/string_view:710:5: note: candidate: 'template<class _CharT, class _Traits> constexpr bool std::operator>(__type_identity_t<basic_string_view<_CharT, _Traits> >, basic_string_view<_CharT, _Traits>)'
  710 |     operator> (__type_identity_t<basic_string_view<_CharT, _Traits>> __x,
      |     ^~~~~~~~
/usr/include/c++/14/string_view:710:5: note:   template argument deduction/substitution failed:
a.cc:86:65: note:   mismatched types 'std::basic_string_view<_CharT, _Traits>' and 'int'
   86 |                 if(dotp(minusvtr(p[1],p[0]),minusvtr(p[2],p[0])>0&&dotp(minusvtr(p[0],p[1]),minusvtr(p[2],p[1])>0)
      |                                                                 ^
/usr/include/c++/14/bits/basic_string.h:3915:5: note: candidate: 'template<class _CharT, class _Traits, class _Alloc> bool std::operator>(const __cxx11::basic_string<_CharT, _Traits, _Allocator>&, const __cxx11::basic_string<_CharT, _Traits, _Allocator>&)'
 3915 |     operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
      |     ^~~~~~~~
/usr/include/c++/14/bits/basic_string.h:3915:5: note:   template argument deduction/substitution failed:
a.cc:86:65: note:   'vtr' is not derived from 'const std::__cxx11::basic_string<_CharT, _Traits, _Allocator>'
   86 |                 if(dotp(minusvtr(p[1],p[0]),minusvtr(p[2],p[0])>0&&dotp(minusvtr(p[0],p[1]),minusvtr(p[2],p[1])>0)
      |                                                                 ^
/usr/include/c++/14/bits/basic_string.h:3929:5: note: candidate: 'template<class _CharT, class _Traits, class _Alloc> bool std::operator>(const __cxx11::basic_string<_CharT, _Traits, _Allocator>&, const _CharT*)'
 3929 |     operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
      |     ^~~~~~~~
/usr/include/c++/14/bits/basic_string.h:3929:5: note:   template argument deduction/substitution failed:
a.cc:86:65: note:   'vtr' is not derived from 'const std::__cxx11::basic_string<_CharT, _Traits, _Allocator>'
   86 |                 if(dotp(minusvtr(p[1],p[0]),minusvtr(p[2],p[0])>0&&dotp(minusvtr(p[0],p[1]),minusvtr(p[2],p[1])>0)
      |                                                                 ^
/usr/include/c++/14/bits/basic_string.h:3942:5: note: candidate: 'template<class _CharT, class _Traits, class _Alloc> bool std::operator>(const _CharT*, const __cxx11::basic_string<_CharT, _Traits, _Allocator>&)'
 3942 |     operator>(const _CharT* __lhs,
      |     ^~~~~~~~
/usr/include/c++/14/bits/basic_string.h:3942:5: note:   template argument deduction/substitution failed:
a.cc:86:65: note:   mismatched types 'const _CharT*' and 'vtr'
   86 |                 if(dotp(minusvtr(p[1],p[0]),minusvtr(p[2],p[0])>0&&dotp(minusvtr(p[0],p[1]),minusvtr(p[2],p[1])>0)
      |                                                                 ^
In file included from /usr/include/c++/14/bits/memory_resource.h:47,
                 from /usr/include/c++/14/string:68:
/usr/include/c++/14/tuple:2619:5: note: candidate: 'template<class ... _TElements, class ... _UElements> constexpr bool std::operator>(const tuple<_UTypes ...>&, const tuple<_Elements ...>&)'
 2619 |     operator>(const tuple<_TElements...>& __t,
      |     ^~~~~~~~
/usr/include/c++/14/tuple:2619:5: note:   template argument deduction/substitution failed:
a.cc:86:65: note:   'vtr' is not derived from 'const std::tuple<_UTypes ...>'
   86 |                 if(dotp(minusvtr(p[1],p[0]),minusvtr(p[2],p[0])>0&&dotp(minusvtr(p[0],p[1]),minusvtr(p[2],p[1])>0)
      |                                                                 ^
In file included from /usr/include/c++/14/vector:66,
                 from a.cc:8:
/usr/include/c++/14/bits/stl_vector.h:2102:5: note: candidate: 'template<class _Tp, class _Alloc> bool std::operator>(const vector<_Tp, _Alloc>&, const vector<_Tp, _Alloc>&)'
 2102 |     operator>(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)
      |     ^~~~~~~~
/usr/include/c++/14/bits/stl_vector.h:2102:5: note:   template argument deduction/substitution failed:
a.cc:86:65: note:   'vtr' is not derived from 'const std::vector<_Tp, _Alloc>'
   86 |                 if(dotp(minusvtr(p[1],p[0]),minusvtr(p[2],p[0])>0&&dotp(minusvtr(p[0],p[1]),minusvtr(p[2],p[1])>0)
      |                                                                 ^
In file included from /usr/include/c++/14/deque:66,
                 from /usr/include/c++/14/queue:62,
                 from