結果
問題 | No.490 yukiソート |
ユーザー |
|
提出日時 | 2020-11-24 00:11:06 |
言語 | Haskell (9.10.1) |
結果 |
WA
|
実行時間 | - |
コード長 | 11,608 bytes |
コンパイル時間 | 8,166 ms |
コンパイル使用メモリ | 255,808 KB |
実行使用メモリ | 14,748 KB |
最終ジャッジ日時 | 2024-07-23 18:13:32 |
合計ジャッジ時間 | 7,203 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | -- * 2 |
other | AC * 4 WA * 10 TLE * 1 -- * 19 |
コンパイルメッセージ
Loaded package environment from /home/judge/.ghc/x86_64-linux-9.8.2/environments/default [1 of 2] Compiling Main ( Main.hs, Main.o ) [2 of 2] Linking a.out
ソースコード
LANGUAGELANGUAGELANGUAGELANGUAGELANGUAGEimportControl.MonadimportControl.Monad.ContimportControl.Monad.STimportControl.Monad.StateimportData.CharimportData.CoerceimportData.IntimportData.MaybeimportData.WordimportSystem.IOimportqualifiedData.ByteStringasBSimportqualifiedData.ByteString.BuilderasBSBimportqualifiedData.ByteString.CharasBSCimportqualifiedData.Vector.Fusion.Stream.MonadicasVFSMimportqualifiedData.Vector.GenericasVGimportqualifiedData.Vector.UnboxedasVUimportqualifiedData.Vector.Unboxed.MutableasVUMmain::IO()main = don <- readLn :: IO Intxs <- seqInput nprintVecInSpcSepLn $ yukisort xsyukisort::VUVectorInt->VUVectorIntyukisort vec| n <= 2 = vec| otherwise = VU.create $ dob <- VU.unsafeThaw vecrange 1 m $ \i -> range 0 (n - 2) $ \p -> range (p + 1) (n - 1) $ \q -> dowhen (p + q == i && ((vec VU.! p) > (vec VU.! q))) $ doitem1 <- VUM.unsafeRead b qitem2 <- VUM.unsafeRead b pVUM.unsafeWrite b p item1VUM.unsafeWrite b q item2return bwhere!n = VU.length vec!m = min (n - 1) (2 * n - 4)rep::Monadm=>Int->Int->m()->m()rep n = flip VFSM.mapM_ (streamG 0 (n - 1) const 0 (+) 1)INLINErep'::Monadm=>Int->Int->m()->m()rep' n = flip VFSM.mapM_ (streamG 0 n const 0 (+) 1)INLINErep1::Monadm=>Int->Int->m()->m()rep1 n = flip VFSM.mapM_ (streamG 1 (n - 1) const 0 (+) 1)INLINErep1'::Monadm=>Int->Int->m()->m()rep1' n = flip VFSM.mapM_ (streamG 1 n const 0 (+) 1)INLINErev::Monadm=>Int->Int->m()->m()rev n = flip VFSM.mapM_ (streamRG (n - 1) 0 const 0 (-) 1)INLINErev'::Monadm=>Int->Int->m()->m()rev' n = flip VFSM.mapM_ (streamRG n 0 const 0 (-) 1)INLINErev1::Monadm=>Int->Int->m()->m()rev1 n = flip VFSM.mapM_ (streamRG (n - 1) 1 const 0 (-) 1)INLINErev1'::Monadm=>Int->Int->m()->m()rev1' n = flip VFSM.mapM_ (streamRG n 1 const 0 (-) 1)INLINErange::Monadm=>Int->Int->Int->m()->m()range l r = flip VFSM.mapM_ (streamG l r const 0 (+) 1)INLINErangeR::Monadm=>Int->Int->Int->m()->m()rangeR r l = flip VFSM.mapM_ (streamRG r l const 0 (-) 1)INLINEforP::Monadm=>Int->Int->m()->m()forP p = flip VFSM.mapM_ (streamG 2 p (^) 2 (+) 1)INLINEforG::Monadm=>Int->Int->Int->Int->Int->Int->Int->Int->Int->Int->Int->m()->m()forG l r f p g d = flip VFSM.mapM_ (streamG l r f p g d)INLINEforRG::Monadm=>Int->Int->Int->Int->Int->Int->Int->Int->Int->Int->Int->m()->m()forRG r l f p g d = flip VFSM.mapM_ (streamRG r l f p g d)INLINEstreamG::Monadm=>Int->Int->Int->Int->Int->Int->Int->Int->Int->Int->VFSMStreammIntstreamG !l !r !f !p !g !d = VFSM.Stream step lwherestep x| f x p <= r = return $ VFSM.Yield x (g x d)| otherwise = return VFSM.DoneINLINEINLINEstreamRG::Monadm=>Int->Int->Int->Int->Int->Int->Int->Int->Int->Int->VFSMStreammIntstreamRG !r !l !f !p !g !d = VFSM.Stream step rwherestep x| f x p >= l = return $ VFSM.Yield x (g x d)| otherwise = return VFSM.DoneINLINEINLINEwithBreakIO::r->ContTrIOb->ContTrIOr->IOrwithBreakIO = flip runContT pure . callCCINLINEwithBreakST::r->ContTrSTsb->ContTrSTsr->STsrwithBreakST = flip runContT pure . callCCINLINEtype CParser a = StateT BSC8.ByteString Maybe arunCParser::CParsera->BSC8ByteString->MaybeaBSC8ByteStringrunCParser = runStateTINLINEint::CParserIntint = coerce $ BSC8.readInt . BSC8.dropWhile isSpaceINLINEint1::CParserIntint1 = fmap (subtract 1) intINLINEchar::CParserCharchar = coerce BSC8.unconsINLINEbyte::CParserWord8byte = coerce BS.unconsINLINEskipSpaces::CParser()skipSpaces = modify' (BSC8.dropWhile isSpace)INLINEseqInput::Int->IOVUVectorIntseqInput n = VU.unfoldrN n (runCParser int) <$> BSC8.getLineINLINEparseN1::Int->IOVUVectorIntparseN1 n = VU.unfoldrN n (runCParser int) <$> BSC8.getContentsINLINEparseN2::Int->IOVUVectorIntIntparseN2 n = VU.unfoldrN n (runCParser $ (,) <$> int <*> int) <$> BSC8.getContentsINLINEparseN3::Int->IOVUVectorIntIntIntparseN3 n = VU.unfoldrN n (runCParser $ (,,) <$> int <*> int <*> int) <$> BSC8.getContentsINLINEparseN4::Int->IOVUVectorIntIntIntIntparseN4 n = VU.unfoldrN n (runCParser $ (,,,) <$> int <*> int <*> int <*> int) <$> BSC8.getContentsINLINEparseN5::Int->IOVUVectorIntIntIntIntIntparseN5 n = VU.unfoldrN n (runCParser $ (,,,,) <$> int <*> int <*> int <*> int <*> int) <$> BSC8.getContentsINLINEparseANBN::Int->IOVUVectorIntVUVectorIntparseANBN n = VU.unzip . VU.unfoldrN n (runCParser $ (,) <$> int <*> int) <$> BSC8.getContentsINLINEparseANBNCN::Int->IOVUVectorIntVUVectorIntVUVectorIntparseANBNCN n = VU.unzip3 . VU.unfoldrN n (runCParser $ (,,) <$> int <*> int <*> int) <$> BSC8.getContentsINLINEtype Query3 = (Int, Int, Int)query3Parser::CParserQuery3query3Parser = doskipSpacest <- charcase t of'0' -> (,,) 0 <$> int <*> int_ -> (,,) 1 <$> int <*> pure 0parseQ3::Int->IOVUVectorQuery3parseQ3 n = VU.unfoldrN n (runCParser query3Parser) <$> BSC8.getContentsINLINEtype Query5 = (Int, Int, Int, Int, Int)query5Parser::CParserQuery5query5Parser = doskipSpacest <- charcase t of'0' -> (,,,,) 0 <$> int <*> int <*> int <*> int_ -> (,,,,) 1 <$> int <*> int <*> pure 0 <*> pure 0parseQ5::Int->IOVUVectorQuery5parseQ5 n = VU.unfoldrN n (runCParser query5Parser) <$> BSC8.getContentsINLINEreadInt::BSC8ByteString->IntreadInt = fst . fromJust . BSC8.readIntINLINEgetInt::IOIntgetInt = readInt <$> BSC8.getLineINLINEreadIntList::BSC8ByteString->IntreadIntList = map readInt . BSC8.wordsINLINEgetIntList::IOIntgetIntList = readIntList <$> BSC8.getLineINLINEreadInteger::BSC8ByteString->IntegerreadInteger = fst . fromJust . BSC8.readIntegerINLINEgetInteger::IOIntegergetInteger = readInteger <$> BSC8.getLineINLINEreadIntegerList::BSC8ByteString->IntegerreadIntegerList = map readInteger . BSC8.wordsINLINEgetIntegerList::IOIntegergetIntegerList = readIntegerList <$> BSC8.getLineINLINEclassShowAsBuilderawhereshowAsBuilder::a->BSBBuilderdefault showAsBuilder :: (Show a) => a -> BSB.BuildershowAsBuilder = BSB.string8 . showinstanceShowAsBuilderIntwhereshowAsBuilder = BSB.intDecINLINEinstanceShowAsBuilderInt8whereshowAsBuilder = BSB.int8DecINLINEinstanceShowAsBuilderInt16whereshowAsBuilder = BSB.int16DecINLINEinstanceShowAsBuilderInt32whereshowAsBuilder = BSB.int32DecINLINEinstanceShowAsBuilderInt64whereshowAsBuilder = BSB.int64DecINLINEinstanceShowAsBuilderWord8whereshowAsBuilder = BSB.word8DecINLINEinstanceShowAsBuilderWord16whereshowAsBuilder = BSB.word16DecINLINEinstanceShowAsBuilderWord32whereshowAsBuilder = BSB.word32DecINLINEinstanceShowAsBuilderWord64whereshowAsBuilder = BSB.word64DecINLINEinstanceShowAsBuilderIntegerwhereshowAsBuilder = BSB.integerDecINLINEinstanceShowAsBuilderFloatwhereshowAsBuilder = BSB.floatDecINLINEinstanceShowAsBuilderDoublewhereshowAsBuilder = BSB.doubleDecINLINEinstanceShowAsBuilderaVGVectorva=>ShowAsBuildervawhereshowAsBuilder = v2BSpcSepputBuilder::BSBBuilder->IO()putBuilder = BSB.hPutBuilder stdoutINLINEprintVecInLines::VGVectorvaShowAsBuildera=>va->IO()printVecInLines = putBuilder . v2BLinesINLINEprintVecInSpcSepLn::VGVectorvaShowAsBuildera=>va->IO()printVecInSpcSepLn = putBuilder . v2BSpcSepLnINLINEv2BSpcSepLn::VGVectorvaShowAsBuildera=>va->BSBBuilderv2BSpcSepLn = v2BSpcSepLnWith showAsBuilderINLINEv2BSpcSep::VGVectorvaShowAsBuildera=>va->BSBBuilderv2BSpcSep = v2BSpcSepWith showAsBuilderINLINEv2BConcat::VGVectorvaShowAsBuildera=>va->BSBBuilderv2BConcat = v2BConcatWith showAsBuilderINLINEv2BLines::VGVectorvaShowAsBuildera=>va->BSBBuilderv2BLines = v2BLinesWith showAsBuilderINLINEv2BSpcSepLnWith::VGVectorva=>a->BSBBuilder->va->BSBBuilderv2BSpcSepLnWith = v2BSpcSepPostfWith "\n"INLINEv2BSpcSepWith::VGVectorva=>a->BSBBuilder->va->BSBBuilderv2BSpcSepWith = v2BSpcSepPostfWith ""INLINEv2BConcatWith::VGVectorva=>a->BSBBuilder->va->BSBBuilderv2BConcatWith showFct = VG.foldr ((<>) . showFct) memptyINLINEv2BLinesWith::VGVectorva=>a->BSBBuilder->va->BSBBuilderv2BLinesWith showFct = VG.foldr (\a -> (showFct a <>) . (BSB.char7 '\n' <>)) memptyINLINEv2BSpcSepPostf::VGVectorvaShowAsBuildera=>BSByteString->va->BSBBuilderv2BSpcSepPostf = (`v2BSpcSepPostfWith` showAsBuilder)INLINEv2BSpcSepPostfWith::VGVectorva=>BSByteString->a->BSBBuilder->va->BSBBuilderv2BSpcSepPostfWith = vecToBuilder "" " "INLINEvecToBuilder::VGVectorva=>BSByteString->BSByteString->BSByteString->a->BSBBuilder->va->BSBBuildervecToBuilder !prefix !separator !postfix = vecToBuilder_ (BSB.byteString prefix) (BSB.byteString separator) (BSB.byteString postfix)INLINEvecToBuilder_::VGVectorva=>BSBBuilder->BSBBuilder->BSBBuilder->a->BSBBuilder->va->BSBBuildervecToBuilder_ !prefix !separator !postfix showFct vec = prefix <> VG.foldr (\a rest !prefx -> prefx <> (showFct a <> rest separator)) (const postfix)vec memptyINLINE