これリアルでやってたら二点間距離に気づかずにおわおわになるやつ
右下、うまく四角形描けなくて申し訳ない
こんな感じの場合分けを作り出す問題本当に苦手なので得意になっていきたい・・・・
#include <bits/stdc++.h>
#define INF 1e9
using namespace std;
#define REPR(i,n) for(int i=(n); i >= 0; --i)
#define FOR(i, m, n) for(int i = (m); i < (n); ++i)
#define REP(i, n) for(int i=0, i##_len=(n); i<i##_len; ++i)
#define ALL(a) (a).begin(),(a).end()
template<class T>bool chmin(T &a, const T &b) { if (b<a) { a=b; return true; } return false; }
template<class T>bool chmax(T &a, const T &b) { if (a<b) { a=b; return true; } return false; }
int gcd(int a,int b){return b?gcd(b,a%b):a;}
typedef long long ll;
ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
int main() {
int x1,y1,r;
cin >> x1 >> y1 >> r;
int x2,y2,x3,y3;
cin >> x2 >> y2 >> x3 >> y3;
// 赤く塗られた部分があるかどうかの判定
if (y1+r <= y3 && y1-r >= y2 && x1-r >= x2 && x1+r <= x3) cout << "NO" << endl;
else cout << "YES" << endl;
auto d1 = sqrt(pow((x2-x1),2)+pow((y2-y1),2));
auto d2 = sqrt(pow((x2-x1),2)+pow((y3-y1),2));
auto d3 = sqrt(pow((x3-x1),2)+pow((y3-y1),2));
auto d4 = sqrt(pow((x3-x1),2)+pow((y2-y1),2));
if ( r >= d1 && r >= d2 && r >= d3 && r >= d4 ) cout << "NO" << endl;
else cout << "YES" << endl;
}