ARC051A – 塗り絵

これリアルでやってたら二点間距離に気づかずにおわおわになるやつ

右下、うまく四角形描けなくて申し訳ない

A - 塗り絵

こんな感じの場合分けを作り出す問題本当に苦手なので得意になっていきたい・・・・

塗り絵

#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;
}
Licensed under CC BY-NC-ND 4.0
Built with Hugo
テーマ StackJimmy によって設計されています。