Language: C++

#include <bits/stdc++.h>
/*#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#include <ext/pb_ds/detail/standard_policies.hpp>*/
 
#define pb push_back
#define mp make_pair
#define sz(s) ((int)(s.size()))
#define all(s) s.begin(), s.end()
#define rep(i, a, n) for (int i = a; i <= n; ++i)
#define per(i, n, a) for (int i = n; i >= a; --i)
#define onlycin ios_base::sync_with_stdio(false); cin.tie(0) 
using namespace std;
// using namespace __gnu_pbds;
typedef long long ll;
typedef unsigned long long ull;
/*typedef tree<
pair < int, int >,
null_type,
less< pair < int, int > >,
rb_tree_tag,
tree_order_statistics_node_update>
ordered_set;*/
// find_by_order() order_of_key()
const int MAXN = (int)5e5+228;
const char nxtl = '\n';
const int mod = (int)1e9+7;
const double eps = (double)1e-7;
template<typename T> inline bool updmin(T &a, const T &b) {return a > b ? a = b, 1 : 0;}
template<typename T> inline bool updmax(T &a, const T &b) {return a < b ? a = b, 1 : 0;}

int x1, y1, x2, y2, x[MAXN], y[MAXN], n;
double len = acos(-1) * 5.000000, res;
map < int, int > mx, my;

double calc1(int qx, int wx, int ex, int rx) {
	if(!(qx <= ex) || !(wx <= rx)) {
		return (double)1e12;
	}
	//cerr << qx << ' '<< wx << ' '<< ex << ' '<< rx << nxtl;
	if(qx == 4 && wx == 2) {
	//	exit(0);
	}
	if(qx == ex && wx == rx) return 0.0;
	double ans = ((ex - qx) + (rx - wx)) * 100.0000;
	auto it = my.lower_bound(wx);
	if(it != my.end()) {
		if(it->first == wx && it->second >= qx) {
			updmin(ans, calc1(it->second + 1, it->first, ex, rx) + (it -> second - qx + 1) * 100.000 - 20.000 + len * 2.000);
			updmin(ans, calc1(it->second, it->first + 1, ex, rx) + (it->second - qx) * 100.000 - 10.00 + len + 90.000);
		} else {
			int nx = max(it->second, qx), ny = it->first;
			if(mp(nx, ny) != mp(qx, wx))
				updmin(ans, calc1(nx, ny, ex, rx) + ((nx - qx) + (ny - wx)) * 100.0000);
			else {
				it = my.upper_bound(wx);
				if(it != my.end()) {
					nx = max(it->second, qx), ny = max(it->first,wx);
					if(mp(nx, ny) != mp(qx, wx))
						updmin(ans, calc1(nx, ny, ex, rx) + ((nx - qx) + (ny - wx)) * 100.0000);
					}
			}
		}
	}
	it = mx.lower_bound(qx);
	if(it != mx.end()) {
		if(it->first == qx && it->second >= wx) {
			updmin(ans, calc1(qx, it->second + 1, ex, rx) + (it -> second - wx + 1) * 100.000 - 20.000 + len * 2.000);
			updmin(ans, calc1(qx + 1, it->second, ex, rx) + (it->second - wx) * 100.000 - 10.00 + len + 90.000);
		} else {
			int nx = max(it->first,qx), ny = max(it->second, wx);
			if(mp(nx, ny) != mp(qx, wx))
				updmin(ans, calc1(nx, ny, ex, rx) + ((nx - qx) + (ny - wx)) * 100.0000);
			else {
				it = mx.upper_bound(qx);
				if(it != mx.end()) {
					nx = max(it->first, qx), ny = max(it->first,wx);
					if(mp(nx, ny) != mp(qx, wx))
						updmin(ans, calc1(nx, ny, ex, rx) + ((nx - qx) + (ny - wx)) * 100.0000);
					}
			}
		}
	}
	return ans;
}

int main() {
	#ifdef accepted
		freopen(".in", "r", stdin);
		freopen(".out", "w", stdout);
	#endif
	onlycin;
	cin >> x1 >> y1 >> x2 >> y2;
	cin >> n;
	rep(i, 0, n - 1) {
		cin >> x[i] >> y[i];
		mx[x[i]] = y[i];
		my[y[i]] = x[i];
	}
	if(x1 > x2) {
		swap(x1, x2);
		swap(y1, y2);
	}
	if(x1 == x2) {
		if(y1 > y2) swap(y1, y2);
		if(mx[x1] < y2) cout << setprecision(15) << fixed << (y2 - y1) * 100ll - 20ll + len * 2.0000;
		else cout << (y2 - y1) * 100ll << nxtl;
		return 0;
	}
	if(y1 == y2) {
		if(x1 > x2) swap(y1, y2);
		if(my[y1] < x2) cout << setprecision(15) << fixed << (x2 - x1) * 100ll - 20ll + len * 2.0000;
		else cout << (x2 - x1) * 100ll << nxtl;
		return 0;
	}
	assert(y1 <= y2);
	cout << setprecision(15) << fixed << calc1(x1, y1, x2, y2) << nxtl;
	
	return 0;
}

Compiler output:
a.cc:32:9: error: 'int y1' redeclared as different kind of entity
   32 | int x1, y1, x2, y2, x[MAXN], y[MAXN], n;
      |         ^~
In file included from /usr/include/features.h:523,
                 from /usr/include/x86_64-linux-gnu/c++/14/bits/os_defines.h:39,
                 from /usr/include/x86_64-linux-gnu/c++/14/bits/c++config.h:683,
                 from /usr/include/c++/14/cassert:43,
                 from /usr/include/x86_64-linux-gnu/c++/14/bits/stdc++.h:33,
                 from a.cc:1:
/usr/include/x86_64-linux-gnu/bits/mathcalls.h:257:1: note: previous declaration 'double y1(double)'
  257 | __MATHCALL (y1,, (_Mdouble_));
      | ^~~~~~~~~~
a.cc: In function 'int main()':
a.cc:93:19: error: no match for 'operator>>' (operand types are 'std::basic_istream<char>::__istream_type' {aka 'std::basic_istream<char>'} and 'double(double) noexcept')
   93 |         cin >> x1 >> y1 >> x2 >> y2;
      |         ~~~~~~~~~ ^~ ~~
      |             |        |
      |             |        double(double) noexcept
      |             std::basic_istream<char>::__istream_type {aka std::basic_istream<char>}
In file included from /usr/include/c++/14/sstream:40,
                 from /usr/include/c++/14/complex:45,
                 from /usr/include/c++/14/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/14/bits/stdc++.h:127:
/usr/include/c++/14/istream:170:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(bool&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  170 |       operator>>(bool& __n)
      |       ^~~~~~~~
/usr/include/c++/14/istream:170:7: note:   conversion of argument 1 would be ill-formed:
a.cc:93:22: error: cannot bind non-const lvalue reference of type 'bool&' to a value of type 'double (*)(double) noexcept'
   93 |         cin >> x1 >> y1 >> x2 >> y2;
      |                      ^~
/usr/include/c++/14/istream:174:7: note: candidate: 'std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(short int&) [with _CharT = char; _Traits = std::char_traits<char>]' (near match)
  174 |       operator>>(short& __n);
      |       ^~~~~~~~
/usr/include/c++/14/istream:174:7: note:   conversion of argument 1 would be ill-formed:
a.cc:93:22: error: invalid conversion from 'double (*)(double) noexcept' to 'short int' [-fpermissive]
   93 |         cin >> x1 >> y1 >> x2 >> y2;
      |                      ^~
      |                      |
      |                      double (*)(double) noexcept
a.cc:93:22: error: cannot bind rvalue '(short int)y1' to 'short int&'
/usr/include/c++/14/istream:177:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(short unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  177 |       operator>>(unsigned short& __n)
      |       ^~~~~~~~
/usr/include/c++/14/istream:177:7: note:   conversion of argument 1 would be ill-formed:
a.cc:93:22: error: invalid conversion from 'double (*)(double) noexcept' to 'short unsigned int' [-fpermissive]
   93 |         cin >> x1 >> y1 >> x2 >> y2;
      |                      ^~
      |                      |
      |                      double (*)(double) noexcept
a.cc:93:22: error: cannot bind rvalue '(short unsigned int)y1' to 'short unsigned int&'
/usr/include/c++/14/istream:181:7: note: candidate: 'std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(int&) [with _CharT = char; _Traits = std::char_traits<char>]' (near match)
  181 |       operator>>(int& __n);
      |       ^~~~~~~~
/usr/include/c++/14/istream:181:7: note:   conversion of argument 1 would be ill-formed:
a.cc:93:22: error: invalid conversion from 'double (*)(double) noexcept' to 'int' [-fpermissive]
   93 |         cin >> x1 >> y1 >> x2 >> y2;
      |                      ^~
      |                      |
      |                      double (*)(double) noexcept
a.cc:93:22: error: cannot bind rvalue '(int)y1' to 'int&'
/usr/include/c++/14/istream:184:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  184 |       operator>>(unsigned int& __n)
      |       ^~~~~~~~
/usr/include/c++/14/istream:184:7: note:   conversion of argument 1 would be ill-formed:
a.cc:93:22: error: invalid conversion from 'double (*)(double) noexcept' to 'unsigned int' [-fpermissive]
   93 |         cin >> x1 >> y1 >> x2 >> y2;
      |                      ^~
      |                      |
      |                      double (*)(double) noexcept
a.cc:93:22: error: cannot bind rvalue '(unsigned int)y1' to 'unsigned int&'
/usr/include/c++/14/istream:188:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long int&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  188 |       operator>>(long& __n)
      |       ^~~~~~~~
/usr/include/c++/14/istream:188:7: note:   conversion of argument 1 would be ill-formed:
a.cc:93:22: error: invalid conversion from 'double (*)(double) noexcept' to 'long int' [-fpermissive]
   93 |         cin >> x1 >> y1 >> x2 >> y2;
      |                      ^~
      |                      |
      |                      double (*)(double) noexcept
a.cc:93:22: error: cannot bind rvalue '(long int)y1' to 'long int&'
/usr/include/c++/14/istream:192:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  192 |       operator>>(unsigned long& __n)
      |       ^~~~~~~~
/usr/include/c++/14/istream:192:7: note:   conversion of argument 1 would be ill-formed:
a.cc:93:22: error: invalid conversion from 'double (*)(double) noexcept' to 'long unsigned int' [-fpermissive]
   93 |         cin >> x1 >> y1 >> x2 >> y2;
      |                      ^~
      |                      |
      |                      double (*)(double) noexcept
a.cc:93:22: error: cannot bind rvalue '(long unsigned int)y1' to 'long unsigned int&'
/usr/include/c++/14/istream:199:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long long int&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  199 |       operator>>(long long& __n)
      |       ^~~~~~~~
/usr/include/c++/14/istream:199:7: note:   conversion of argument 1 would be ill-formed:
a.cc:93:22: error: invalid conversion from 'double (*)(double) noexcept' to 'long long int' [-fpermissive]
   93 |         cin >> x1 >> y1 >> x2 >> y2;
      |                      ^~
      |                      |
      |                      double (*)(double) noexcept
a.cc:93:22: error: cannot bind rvalue '(long long int)y1' to 'long long int&'
/usr/include/c++/14/istream:203:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long long unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  203 |       operator>>(unsigned long long& __n)
      |       ^~~~~~~~
/usr/include/c++/14/istream:203:7: note:   conversion of argument 1 would be ill-formed:
a.cc:93:22: error: invalid conversion from 'double (*)(double) noexcept' to 'long long unsigned int' [-fpermissive]
   93 |         cin >> x1 >> y1 >> x2 >> y2;
      |                      ^~
      |                      |
      |                      double (*)(double) noexcept
a.cc:93:22: error: cannot bind rvalue '(long long unsigned int)y1' to 'long long unsigned int&'
/usr/include/c++/14/istream:328:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(void*&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  328 |       operator>>(void*& __p)
      |       ^~~~~~~~
/usr/include/c++/14/istream:328:7: note:   conversion of argument 1 would be ill-formed:
a.cc:93:22: error: invalid conversion from 'double (*)(double) noexcept' to 'void*' [-fpermissive]
   93 |         cin >> x1 >> y1 >> x2 >> y2;
      |                      ^~
      |                      |
      |                      double (*)(double) noexcept
a.cc:93:22: error: cannot bind rvalue '(void*)y1' to 'void*&'
/usr/include/c++/14/istream:122:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(__istream_type& (*)(__istream_type&)) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]' (near match)
  122 |       operator>>(__istream_type& (*__pf)(__istream_type&))
      |       ^~~~~~~~
/usr/include/c++/14/istream:122:7: note:   conversion of argument 1 would be ill-formed:
a.cc:93:22: error: invalid conversion from 'double (*)(double) noexcept' to 'std::basic_istream<char>::__istream_type& (*)(std::basic_istream<char>::__istream_type&)' {aka 'std::basic_istream<char>& (*)(std::basic_istream<char>&)'} [-fpermissive]
   93 |         cin >> x1 >> y1 >> x2 >> y2;
      |                      ^~
      |                      |
      |                      double (*)(double) noexcept
/usr/include/c++/14/istream:126:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(__ios_type& (*)(__ios_type&)) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>; __ios_type = std::basic_ios<char>]' (near match)
  126 |       operator>>(__ios_type& (*__pf)(__ios_type&))
      |       ^~~~~~~~
/usr/include/c++/14/istream:126:7: no