Submission #40301577
Source Code Expand
Copy
importControl.MonadimportqualifiedData.ByteString.CharasBSimportData.CharimportData.ListimportData.Array.STimportControl.Monad.STimportData.Arraymain = do[n] <- bsGetLnIntsas <- bsGetLnIntsbs <- bsGetLnIntslet ans = abc296f n as bsputStrLn $ if ans then "Yes" else "No"bsGetLnInts::IOIntbsGetLnInts = unfoldr (BS.readInt . BS.dropWhile isSpace) <$> BS.getLineabc296f::Int->Int->Int->Boolabc296f n as bs = cond1 && (cond2 || cond3)
import Control.Monad import qualified Data.ByteString.Char8 as BS import Data.Char import Data.List import Data.Array.ST import Control.Monad.ST import Data.Array main = do [n] <- bsGetLnInts as <- bsGetLnInts bs <- bsGetLnInts let ans = abc296f n as bs putStrLn $ if ans then "Yes" else "No" bsGetLnInts :: IO [Int] bsGetLnInts = unfoldr (BS.readInt . BS.dropWhile isSpace) <$> BS.getLine abc296f :: Int -> [Int] -> [Int] -> Bool abc296f n as bs = cond1 && (cond2 || cond3) where cA = accumArray (+) 0 (1,n) [(a,1) | a <- as] cB = accumArray (+) 0 (1,n) [(b,1) | b <- bs] -- 両者の要素が一致 cond1 = cA == cB -- カウントが1でない、つまりどこかに重複があるなら、何とでもなる cond2 = any (1 /=) (elems cA) -- 値の重複がないとき、反転数の偶奇が両者で等しいことが必要。 -- <=> P[i] = B[A[i]] が偶置換 ba = listArray (1,n) bs cond3 = runST $ do p <- newListArray (1,n) $ map (ba !) as loop p 1 True loop :: STUArray s Int Int -> Int -> Bool -> ST s Bool loop p i ans | n < i = return ans | otherwise = do j <- readArray p i if i == j then loop p (succ i) ans else do pj <- readArray p j writeArray p i pj writeArray p j j loop p i (not ans)
Submission Info
Submission Time | |
---|---|
Task | F - Simultaneous Swap |
User | joetheshootingst |
Language | Haskell (GHC 8.8.3) |
Score | 500 |
Code Size | 1403 Byte |
Status | AC |
Exec Time | 145 ms |
Memory | 47808 KB |
Compile Error
Loaded package environment from /home/contestant/.ghc/x86_64-linux-8.8.3/environments/default
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 500 / 500 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | example_00.txt, example_01.txt, example_02.txt, example_03.txt |
All | example_00.txt, example_01.txt, example_02.txt, example_03.txt, hand_00.txt, hand_01.txt, hand_02.txt, hand_03.txt, hand_04.txt, hand_05.txt, hand_06.txt, hand_07.txt, hand_08.txt, overlap_00.txt, overlap_01.txt, overlap_02.txt, overlap_03.txt, overlap_04.txt, overlap_05.txt, overlap_06.txt, overlap_07.txt, overlap_08.txt, overlap_09.txt, overlap_10.txt, overlap_11.txt, overlap_12.txt, overlap_13.txt, overlap_14.txt, random_00.txt, random_01.txt, random_02.txt, random_03.txt, random_04.txt, random_05.txt, random_06.txt, random_07.txt, random_08.txt, random_09.txt, random_10.txt, random_11.txt, random_12.txt, random_13.txt, random_14.txt, random_15.txt, random_16.txt, random_17.txt, random_18.txt, random_19.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
example_00.txt | AC | 6 ms | 3544 KB |
example_01.txt | AC | 3 ms | 3772 KB |
example_02.txt | AC | 2 ms | 3796 KB |
example_03.txt | AC | 3 ms | 3548 KB |
hand_00.txt | AC | 97 ms | 47800 KB |
hand_01.txt | AC | 95 ms | 47616 KB |
hand_02.txt | AC | 133 ms | 47720 KB |
hand_03.txt | AC | 137 ms | 47696 KB |
hand_04.txt | AC | 55 ms | 25768 KB |
hand_05.txt | AC | 55 ms | 25612 KB |
hand_06.txt | AC | 81 ms | 47052 KB |
hand_07.txt | AC | 86 ms | 46780 KB |
hand_08.txt | AC | 84 ms | 47028 KB |
overlap_00.txt | AC | 118 ms | 29840 KB |
overlap_01.txt | AC | 118 ms | 29972 KB |
overlap_02.txt | AC | 120 ms | 29856 KB |
overlap_03.txt | AC | 119 ms | 29840 KB |
overlap_04.txt | AC | 119 ms | 29496 KB |
overlap_05.txt | AC | 123 ms | 29952 KB |
overlap_06.txt | AC | 119 ms | 29304 KB |
overlap_07.txt | AC | 121 ms | 29592 KB |
overlap_08.txt | AC | 120 ms | 29920 KB |
overlap_09.txt | AC | 120 ms | 29864 KB |
overlap_10.txt | AC | 113 ms | 47032 KB |
overlap_11.txt | AC | 111 ms | 46852 KB |
overlap_12.txt | AC | 111 ms | 46852 KB |
overlap_13.txt | AC | 111 ms | 47084 KB |
overlap_14.txt | AC | 113 ms | 46856 KB |
random_00.txt | AC | 137 ms | 47760 KB |
random_01.txt | AC | 130 ms | 47720 KB |
random_02.txt | AC | 129 ms | 47608 KB |
random_03.txt | AC | 132 ms | 47568 KB |
random_04.txt | AC | 134 ms | 47572 KB |
random_05.txt | AC | 133 ms | 47800 KB |
random_06.txt | AC | 134 ms | 47728 KB |
random_07.txt | AC | 133 ms | 47620 KB |
random_08.txt | AC | 135 ms | 47552 KB |
random_09.txt | AC | 134 ms | 47608 KB |
random_10.txt | AC | 135 ms | 47684 KB |
random_11.txt | AC | 137 ms | 47216 KB |
random_12.txt | AC | 137 ms | 47552 KB |
random_13.txt | AC | 137 ms | 47624 KB |
random_14.txt | AC | 139 ms | 47712 KB |
random_15.txt | AC | 138 ms | 47808 KB |
random_16.txt | AC | 138 ms | 47724 KB |
random_17.txt | AC | 145 ms | 47736 KB |
random_18.txt | AC | 141 ms | 47804 KB |
random_19.txt | AC | 138 ms | 47700 KB |