Submission #17704253


Source Code Expand

{-# LANGUAGE DatatypeContexts #-}
import           Control.Exception           (assert)
import           Control.Monad
import           Control.Monad.Primitive
import qualified Control.Monad.ST            as ST
import qualified Data.Array.IO               as IO
import qualified Data.Array.ST               as ST
import qualified Data.Array.Unboxed          as A
import           Data.Bits
import qualified Data.ByteString.Char8       as BS
import           Data.Char
import           Data.Foldable
import           Data.List
import qualified Data.Map.Strict             as Map
import           Data.Maybe
import qualified Data.Sequence               as Seq
import qualified Data.Set                    as Set
import qualified Data.Vector                 as VB
import qualified Data.Vector.Mutable         as VBM
import qualified Data.Vector.Unboxed         as V
import           Data.Vector.Unboxed.Base
import qualified Data.Vector.Unboxed.Mutable as VM
import           Debug.Trace

readInt = fst . fromJust . BS.readInt
readIntList = map readInt . BS.words
getInt = readInt <$> BS.getLine
getIntList = readIntList <$> BS.getLine
getIntVec n = V.unfoldrN n (BS.readInt . BS.dropWhile isSpace) <$> BS.getLine

readInteger = fst . fromJust . BS.readInteger
readIntegerList = map readInteger . BS.words
getInteger = readInteger <$> BS.getLine
getIntegerList = readIntegerList <$> BS.getLine

inf :: Int
inf = 10^18

main = do
  n <- getInt
  s <- getLine

  let sl = take n s
      sr = reverse $ drop n s

      color _ []     sr sb = (sr, sb)
      color i (c:cs) sr sb | i .&. 1 == 1 = color (i `shiftR` 1) cs (c:sr) sb
                           | otherwise    = color (i `shiftR` 1) cs sr (c:sb)

      allColors i s cs | i >= 1 `shiftL` n = cs
                       | otherwise = let col = color i s "" ""
                                     in allColors (i+1) s (col:cs)

      mkColorMap :: [(String,String)] -> Map.Map (String,String) Int
        -> Map.Map (String,String) Int
      mkColorMap []       m = m
      mkColorMap (col:cs) m = let n = Map.findWithDefault 0 col m
                                  m' = Map.insert col (n+1) m
                              in mkColorMap cs m'

      csl = allColors (0::Int) sl []
      csr = allColors (0::Int) sr []

      m = mkColorMap csl Map.empty

      solve []       res = res
      solve (col:cs) res = let n = Map.findWithDefault 0 col m
                           in solve cs (res+n)

  print $ solve csr 0

Submission Info

Submission Time
Task C - String Coloring
User unnohideyuki
Language Haskell (GHC 8.8.3)
Score 600
Code Size 2543 Byte
Status AC
Exec Time 1327 ms
Memory 321052 KiB

Compile Error

Loaded package environment from /home/contestant/.ghc/x86_64-linux-8.8.3/environments/default

Main.hs:1:14: warning:
    -XDatatypeContexts is deprecated: It was widely considered a misfeature, and has been removed from the Haskell language.
  |
1 | {-# LANGUAGE DatatypeContexts #-}
  |              ^^^^^^^^^^^^^^^^

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 600 / 600
Status
AC × 4
AC × 43
Set Name Test Cases
Sample example_0, example_1, example_2, example_3
All almost_z_0, almost_z_1, almost_z_2, almost_z_3, bigrand_0, bigrand_1, bigrand_2, example_0, example_1, example_2, example_3, handmade_0, handmade_1, nonzero_0, nonzero_1, nonzero_2, nonzero_3, nonzero_4, nonzero_5, nonzero_sc_0, nonzero_sc_1, nonzero_sc_10, nonzero_sc_11, nonzero_sc_2, nonzero_sc_3, nonzero_sc_4, nonzero_sc_5, nonzero_sc_6, nonzero_sc_7, nonzero_sc_8, nonzero_sc_9, nonzero_small_0, nonzero_small_1, nonzero_small_2, nonzero_small_3, rand_0, rand_1, rand_2, runnur_0, runnur_1, runnur_2, runnur_3, runnur_4
Case Name Status Exec Time Memory
almost_z_0 AC 742 ms 82420 KiB
almost_z_1 AC 778 ms 83328 KiB
almost_z_2 AC 611 ms 83348 KiB
almost_z_3 AC 660 ms 82420 KiB
bigrand_0 AC 1059 ms 244208 KiB
bigrand_1 AC 1165 ms 313876 KiB
bigrand_2 AC 1113 ms 237120 KiB
example_0 AC 2 ms 3684 KiB
example_1 AC 13 ms 5324 KiB
example_2 AC 2 ms 3712 KiB
example_3 AC 564 ms 82540 KiB
handmade_0 AC 2 ms 3708 KiB
handmade_1 AC 3 ms 3660 KiB
nonzero_0 AC 1229 ms 312824 KiB
nonzero_1 AC 1079 ms 222692 KiB
nonzero_2 AC 1303 ms 314900 KiB
nonzero_3 AC 1230 ms 321052 KiB
nonzero_4 AC 1245 ms 314840 KiB
nonzero_5 AC 1266 ms 313820 KiB
nonzero_sc_0 AC 566 ms 82304 KiB
nonzero_sc_1 AC 1069 ms 88564 KiB
nonzero_sc_10 AC 1215 ms 199148 KiB
nonzero_sc_11 AC 1147 ms 196116 KiB
nonzero_sc_2 AC 934 ms 88400 KiB
nonzero_sc_3 AC 1082 ms 136752 KiB
nonzero_sc_4 AC 1128 ms 163280 KiB
nonzero_sc_5 AC 1327 ms 317028 KiB
nonzero_sc_6 AC 565 ms 82416 KiB
nonzero_sc_7 AC 1052 ms 89480 KiB
nonzero_sc_8 AC 924 ms 87520 KiB
nonzero_sc_9 AC 1003 ms 97892 KiB
nonzero_small_0 AC 19 ms 6864 KiB
nonzero_small_1 AC 2 ms 3712 KiB
nonzero_small_2 AC 2 ms 3668 KiB
nonzero_small_3 AC 145 ms 37340 KiB
rand_0 AC 2 ms 3688 KiB
rand_1 AC 2 ms 3668 KiB
rand_2 AC 2 ms 3516 KiB
runnur_0 AC 909 ms 90596 KiB
runnur_1 AC 789 ms 83432 KiB
runnur_2 AC 877 ms 85512 KiB
runnur_3 AC 873 ms 86512 KiB
runnur_4 AC 895 ms 87516 KiB