水面下の夢

競プロやイラストに興味があります.メインブログがここ.ソシャゲの話はこっち(http://ameblo.jp/0n0-yumechi/).ブログアイコンはYaQ(@8_9_00)さんから.

CodeForce 313 Div.2 - B. Gerald is into Art

※最高の糞コード

回答

Submission #12187667 - Codeforces

境界内に四角形が2つおけるか? という問題.
回転して総当りさせたりすればいいんだけど,なんか・・・ ループが上手く行かず…
そのまま… ゴリ押しコード…

f:id:kawasumi_yume:20150723054402p:plain

イメージこんなかんじで,一つ目の四角形をとりあえず置いてみて,領域1と領域2に対して,それぞれ縦横で2つ目の四角形を置いてみて~という感じ.
もしこれがだめなら,一つ目の四角形を回転させて,同じように領域1と領域2に対して,それぞれ縦横で2つ目の四角形を(略)

っていうのはアルゴリズム的にはわかってるんだけど,プログラム上で実現できないところが弱いですね…
実装力のなさを感じました.もっとスマートに書きたい.

a1, b1 = map(int, input().split())
a2, b2 = map(int, input().split())
a3, b3 = map(int, input().split())

c1 = a1 - a2
c2 = b1 - b2
if c1 >= 0 and c2 >= 0:
    ans = [0, 0, 0, 0]
    ans[0] = 1 if c1 - a3 >= 0 and b1 - b3 >= 0 else 0
    ans[1] = 1 if c1 - b3 >= 0 and b1 - a3 >= 0 else 0
    ans[2] = 1 if a1 - a3 >= 0 and c2 - b3 >= 0 else 0
    ans[3] = 1 if a1 - b3 >= 0 and c2 - a3 >= 0 else 0
    if sum(ans) > 0:
        print("YES")
        exit(0)

d1 = a1 - b2
d2 = b1 - a2
if d1 >= 0 and d2 >= 0:
    ans = [0, 0, 0, 0]
    ans[0] = 1 if d1 - a3 >= 0 and b1 - b3 >= 0 else 0
    ans[1] = 1 if d1 - b3 >= 0 and b1 - a3 >= 0 else 0
    ans[2] = 1 if a1 - a3 >= 0 and d2 - b3 >= 0 else 0
    ans[3] = 1 if a1 - b3 >= 0 and d2 - a3 >= 0 else 0
    if sum(ans) > 0:
        print("YES")
        exit(0)

print("NO")