結果

問題 No.488 四角関係
ユーザー ducktailducktail
提出日時 2018-08-24 14:04:38
言語 Haskell
(9.8.2)
結果
AC  
実行時間 122 ms / 5,000 ms
コード長 940 bytes
コンパイル時間 14,168 ms
コンパイル使用メモリ 213,500 KB
実行使用メモリ 11,500 KB
最終ジャッジ日時 2023-09-02 22:00:56
合計ジャッジ時間 11,742 ms
ジャッジサーバーID
(参考情報)
judge15 / judge13
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 22 ms
11,340 KB
testcase_01 AC 32 ms
11,392 KB
testcase_02 AC 32 ms
11,328 KB
testcase_03 AC 23 ms
11,296 KB
testcase_04 AC 33 ms
11,396 KB
testcase_05 AC 52 ms
11,348 KB
testcase_06 AC 43 ms
11,496 KB
testcase_07 AC 122 ms
11,496 KB
testcase_08 AC 113 ms
11,500 KB
testcase_09 AC 3 ms
7,112 KB
testcase_10 AC 13 ms
10,032 KB
testcase_11 AC 3 ms
7,596 KB
testcase_12 AC 12 ms
9,804 KB
testcase_13 AC 12 ms
9,828 KB
testcase_14 AC 4 ms
8,156 KB
testcase_15 AC 3 ms
7,448 KB
testcase_16 AC 3 ms
7,404 KB
testcase_17 AC 3 ms
7,168 KB
testcase_18 AC 3 ms
7,360 KB
testcase_19 AC 3 ms
7,596 KB
testcase_20 AC 3 ms
7,396 KB
testcase_21 AC 3 ms
7,344 KB
testcase_22 AC 3 ms
7,400 KB
testcase_23 AC 3 ms
7,364 KB
testcase_24 AC 3 ms
7,512 KB
権限があれば一括ダウンロードができます
コンパイルメッセージ
Loaded package environment from /home/judge/.ghc/x86_64-linux-9.6.1/environments/default
[1 of 2] Compiling Main             ( Main.hs, Main.o )
[2 of 2] Linking a.out

ソースコード

diff #

import Control.Applicative
import Control.Monad
import Data.Vector (Vector, (!), (//))
import qualified Data.Vector as V
import Data.Vector.Mutable (IOVector, STVector)
import qualified Data.Vector.Mutable as VM

main :: IO ()
main = do
  [n, m] <- f
  ev <- do
    v <- VM.replicate n [] :: IO (IOVector [Int])
    replicateM_ m $ do
      [i, j] <- f
      xs <- VM.read v i
      VM.write v i (j:xs)
      ys <- VM.read v j
      VM.write v j (i:ys)
    V.freeze v
  print $ solve n ev
  where
    f = map read <$> words <$> getLine

solve :: Int -> Vector [Int] -> Int
solve n ev = length $ do
  i <- [0 .. n-4]
  j <- [i+1 .. n-3]
  k <- [j+1 .. n-2]
  l <- [k+1 .. n-1]
  guard $ (sum . map (egn i)) [j, k, l] == 2
  guard $ (sum . map (egn j)) [i, k, l] == 2
  guard $ (sum . map (egn k)) [i, j, l] == 2
  guard $ (sum . map (egn l)) [i, j, k] == 2
  return ()
  where
    egn x y
      | x `elem` (ev ! y) = 1
      | otherwise = 0
0