結果
| 問題 | No.635 自然門松列 |
| コンテスト | |
| ユーザー |
tottoripaper
|
| 提出日時 | 2018-01-20 02:32:22 |
| 言語 | Haskell (9.10.1) |
| 結果 |
AC
|
| 実行時間 | 8 ms / 650 ms |
| コード長 | 1,124 bytes |
| 記録 | |
| コンパイル時間 | 2,443 ms |
| コンパイル使用メモリ | 185,600 KB |
| 実行使用メモリ | 10,112 KB |
| 最終ジャッジ日時 | 2025-11-29 09:18:14 |
| 合計ジャッジ時間 | 2,559 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 24 |
コンパイルメッセージ
Loaded package environment from /home/judge/.ghc/x86_64-linux-9.10.1/environments/default [1 of 2] Compiling Main ( Main.hs, Main.o ) [2 of 2] Linking a.out
ソースコード
import Control.Monad (replicateM)
import Data.List (nub)
data State = Short | Long | Mix | None
deriving (Eq, Show)
f x y x1 y1
| x < x1 = if y <= y1
then Short
else Mix
| x == x1 = if y < y1
then Short
else if y == y1
then None
else Long
| otherwise = if y < y1
then Mix
else Long
main = do
n <- readLn
replicateM n $ do
[x2, x1, x3, y2, y1, y3] <- fmap (map read . words) getLine
let s1 = f x2 y2 x1 y1
s2 = f x3 y3 x1 y1
can' = case (s1, s2) of
(Mix, _) -> True
(_, Mix) -> True
_ -> s1 == s2
can = (maximum [ x1, x2, x3 ] == x1 || minimum [ x1, x2, x3 ] == x1) && length (nub [ x1, x2, x3 ]) == length [ x1, x2, x3 ] ||
(maximum [ y1, y2, y3 ] == y1 || minimum [ y1, y2, y3 ] == y1) && length (nub [ y1, y2, y3 ]) == length [ y1, y2, y3 ] ||
(x2 - x1) * (y3 - y1) /= (x3 - x1) * (y2 - y1) && can'
putStrLn $ if can then "YES" else "NO"
tottoripaper