Submission #9414815
Source Code Expand
import Control.Monad
import qualified Data.ByteString.Char8 as BS
import Data.Maybe
readInt = fst . fromJust . BS.readInt
readIntList = map readInt . BS.words
getInt = readInt <$> BS.getLine
getIntList = readIntList <$> BS.getLine
{-
- Next lexicographical permutation algorithm
- by Project Nayuki, 2016. Public domain.
- https://www.nayuki.io/page/next-lexicographical-permutation-algorithm
-
- Computes the next lexicographical permutation of the specified finite
- list of numbers.
- Returns Nothing if the argument is already the highest permutation.
-}
nextPermutation :: Ord a => [a] -> Maybe [a]
nextPermutation xs =
let
len = length xs
-- Reverse of longest non-increasing suffix
revSuffix = findPrefix (reverse xs)
suffixLen = length revSuffix
prefixMinusPivot = take (len - suffixLen - 1) xs
pivot = xs !! (len - suffixLen - 1)
suffixHead = takeWhile (<= pivot) revSuffix
newPivot : suffixTail = drop (length suffixHead) revSuffix
newSuffix = suffixHead ++ (pivot : suffixTail)
in
if suffixLen == len
then Nothing
else Just (prefixMinusPivot ++ (newPivot : newSuffix))
where
findPrefix [] = []
findPrefix (x:xs) =
x : (if xs /= [] && x <= head xs then findPrefix xs else [])
main = do
_ <- getInt
[p', q'] <- replicateM 2 getIntList
let (p, q) = if p' <= q' then (p', q') else (q', p')
print $ solve p q 0
where
solve p q m | p == q = m
| otherwise = let p' = (fromJust . nextPermutation) p
in solve p' q (m + 1)
Submission Info
| Submission Time | |
|---|---|
| Task | C - Count Order |
| User | unnohideyuki |
| Language | Haskell (GHC 7.10.3) |
| Score | 300 |
| Code Size | 1629 Byte |
| Status | AC |
| Exec Time | 14 ms |
| Memory | 892 KiB |
Judge Result
| Set Name | All | Sample | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 300 / 300 | 0 / 0 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| All | sample_01.txt, sample_02.txt, sample_03.txt, testcase_0.txt, testcase_1.txt, testcase_2.txt, testcase_3.txt, testcase_4.txt, testcase_5.txt, testcase_6.txt, testcase_7.txt, testcase_8.txt, testcase_9.txt |
| Sample | sample_01.txt, sample_02.txt, sample_03.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| sample_01.txt | AC | 2 ms | 380 KiB |
| sample_02.txt | AC | 7 ms | 892 KiB |
| sample_03.txt | AC | 2 ms | 380 KiB |
| testcase_0.txt | AC | 2 ms | 892 KiB |
| testcase_1.txt | AC | 2 ms | 508 KiB |
| testcase_2.txt | AC | 2 ms | 380 KiB |
| testcase_3.txt | AC | 8 ms | 892 KiB |
| testcase_4.txt | AC | 1 ms | 380 KiB |
| testcase_5.txt | AC | 1 ms | 380 KiB |
| testcase_6.txt | AC | 1 ms | 380 KiB |
| testcase_7.txt | AC | 14 ms | 892 KiB |
| testcase_8.txt | AC | 2 ms | 380 KiB |
| testcase_9.txt | AC | 1 ms | 380 KiB |