Submission #60320214


Source Code Expand

{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE BlockArguments #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE LambdaCase #-}
{-# HLINT ignore "Used otherwise as a pattern" #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TupleSections #-}
{-# LANGUAGE TypeApplications #-}
{-# OPTIONS_GHC -Wno-overlapping-patterns #-}
{-# OPTIONS_GHC -Wno-unrecognised-pragmas #-}

module Main where

import Control.Monad
import Control.Monad.ST
import Data.Array (Array)
import Data.Array.IArray
import Data.Array.IO
import Data.Array.MArray
import Data.Array.ST
import Data.Array.Unboxed (UArray)
import Data.Bool (bool)
import qualified Data.ByteString.Char8 as BC
import qualified Data.Char as C
import Data.Function (fix)
import qualified Data.IntMap as IM
import qualified Data.IntSet as IS
import Data.Ix
import Data.List (elemIndices, foldl', group, groupBy, sort, sortBy, sortOn, unfoldr)
import Data.List.Extra (breakEnd, lower, splitOn, upper, (!?))
import Data.Maybe (fromMaybe)
import Data.Ord (Down (Down), comparing)
import Data.STRef (modifySTRef', newSTRef, readSTRef, writeSTRef)
import qualified Data.Sequence as Seq
import qualified Data.Set as S
import qualified Data.Vector as V
import qualified Data.Vector.Generic as VG
import qualified Data.Vector.Unboxed as VU
import Debug.Trace (traceShow)
import GHC.IO (unsafePerformIO)
import System.Environment (lookupEnv)

main :: IO ()
main = do
  [n, d] <- getInts
  s <- getLine

  let s' = solve (reverse s) d

  putStrLn $ take (n - length s') s ++ s'

solve :: (Eq t, Num t, Enum t) => [Char] -> t -> [Char]
solve s d = f s [] d
  where
    f s ans 0 = ans
    f (sh : st) ans d
      | sh == '@' = f st ('.' : ans) (pred d)
      | sh == '.' = f st ('.' : ans) d

{-- lib --}
getInts :: IO [Int]
getInts = unfoldr (BC.readInt . BC.dropWhile C.isSpace) <$> BC.getLine

{-- debug --}
dbg :: (Show a) => a -> ()
dbg = case getDebugEnv of
  Just _ -> (`traceShow` ())
  Nothing -> const ()

getDebugEnv :: Maybe String
getDebugEnv = unsafePerformIO (lookupEnv "DEBUG")
{-# NOINLINE getDebugEnv #-}

Submission Info

Submission Time
Task B - Daily Cookie 2
User flowert
Language Haskell (GHC 9.4.5)
Score 200
Code Size 2155 Byte
Status AC
Exec Time 2 ms
Memory 6824 KiB

Compile Error

app/Main.hs:15:1: warning: [-Wunused-imports]
    The import of ‘Control.Monad’ is redundant
      except perhaps to import instances from ‘Control.Monad’
    To import instances alone, use: import Control.Monad()
   |
15 | import Control.Monad
   | ^^^^^^^^^^^^^^^^^^^^

app/Main.hs:16:1: warning: [-Wunused-imports]
    The import of ‘Control.Monad.ST’ is redundant
      except perhaps to import instances from ‘Control.Monad.ST’
    To import instances alone, use: import Control.Monad.ST()
   |
16 | import Control.Monad.ST
   | ^^^^^^^^^^^^^^^^^^^^^^^

app/Main.hs:17:1: warning: [-Wunused-imports]
    The import of ‘Data.Array’ is redundant
      except perhaps to import instances from ‘Data.Array’
    To import instances alone, use: import Data.Array()
   |
17 | import Data.Array (Array)
   | ^^^^^^^^^^^^^^^^^^^^^^^^^

app/Main.hs:18:1: warning: [-Wunused-imports]
    The import of ‘Data.Array.IArray’ is redundant
      except perhaps to import instances from ‘Data.Array.IArray’
    To import instances alone, use: import Data.Array.IArray()
   |
18 | import Data.Array.IArray
   | ^^^^^^^^^^^^^^^^^^^^^^^^

app/Main.hs:19:1: warning: [-Wunused-imports]
    The import of ‘Data.Array.IO’ is redundant
      except perhaps to import instances from ‘Data.Array.IO’
    To import instances alone, use: import Data.Array.IO()
   |
19 | import Data.Array.IO
   | ^^^^^^^^^^^^^^^^^^^^

app/Main.hs:20:1: warning: [-Wunused-imports]
    The import of ‘Data.Array.MArray’ is redundant
      except perhaps to import instances from ‘Data.Array.MArray’
    To import instances alone, use: import Data.Array.MArray()
   |
20 | import Data.Array.MArray
   | ^^^^^^^^^^^^^^^^^^^^^^^^

app/Main.hs:21:1: warning: [-Wunused-imports]
    The import of ‘Data.Array.ST’ is redundant
      except perhaps to import instances from ‘Data.Array.ST’
    To import instances alone, use: import Data.Array.ST()
   |
21 | import Data.Array.ST
   | ^^^^^^^^^^^^^^^^^^^^

app/Main.hs:22:1: warning: [-Wunused-imports]
    The import of ‘Data.Array.Unboxed’ is redundant
      except perhaps to import instances from ‘Data.Array.Unboxed’
    To import instances alone, use: import Data.Array.Unboxed()
   |
22 | import Data.Array.Unboxed (UArray)
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

app/Main.hs:23:1: warning: [-Wunused-imports]
    The import of ‘Data.Bool’ is redundant
      except perhaps to import instances from ‘Data.Bool’
    To import instances alone, use: import Data.Bool()
   |
23 | import Data.Bool (bool)
   | ^^^^^^^^^^^^^^^^^^^^^^^

app/Main.hs:26:1: warning: [-Wunused-imports]
    The import of ‘Data.Function’ is redundant
      except perhaps to import instances from ‘Data.Function’
    To import instances alone, use: import Data.Function()
   |
26 | import Data.Function (fix)
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^

app/Main.hs:27:1: warning: [-Wunused-imports]
    The qualified import of ‘Data.IntMap’ is redundant
      except perhaps to import instances from ‘Data.IntMap’
    To import instances alone, use: import Data.IntMap()
   |
27 | import qualified Data.IntMap as IM
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

app/Main.hs:28:1: warning: [-Wunused-imports]
    The qualified import of ‘Data.IntSet’ is redundant
      except perhaps to import instances from ‘Data.IntSet’
    To import instances alone, use: import Data.IntSet()
   |
28 | import qualified Data.IntSet as IS
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

app/Main.hs:29:1: warning: [-Wunused-imports]
    The import of ‘Data.Ix’ is redundant
      except perhaps to import instances from ‘Data.Ix’
    To import instances alone, use: import Data.Ix()
   |
29 | import Data.Ix
   | ^^^^^^^^^^^^^^

app/Main.hs:30:1: warning: [-Wunused-imports]
    The import of ‘elemIndices, foldl', group, groupBy, sort, sortBy,
                   sortOn’
    from module ‘Data.List’ is redundant
   |
30 | import Data.List (elemIndices, foldl', group, groupBy, sort, sortBy, sortOn, unfoldr)
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

app/Main.hs:31:1: warning: [-Wunused-imports]
    The import of ‘Data.List.Extra’ is redundant
      except perhaps to import instances from ‘Data.List.Extra’
    To import instances alone, use: import Data.List.Extra()
   |
31 | import Data.List.Extra (breakEnd, lower, splitOn, upper, (!?))
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

app/Main.hs:32:1: warning: [-Wunused-imports]
    The import of ‘Data.Maybe’ is redundant
      except perhaps to import instances from ‘Data.Maybe’
    To import instances alone, use: import Data.Maybe()
   |
32 | import Data.Maybe (fromMaybe)
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

app/Main.hs:33:1: warning: [-Wunused-imports]
    The import of ‘Data.Ord’ is redundant
      except perhaps to import instances from ‘Data.Ord’
    To import instances alone, use: import Data.Ord()
   |
33 | import Data.Ord (Down (Down), comparing)
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

app/Main.hs:34:1: warning: [-Wunused-imports]
    The import of ‘Data.STRef’ is redundant
      except perhaps to import instances from ‘Data.STRef’
    To import instances alone, use: import Data.STRef()
   |
34 | import Data.STRef (modifySTRef', newSTRef, readSTRef, writeSTRef)
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

app/Main.hs:35:1: warning: [-Wunused-imports]
    The qualified import of ‘Data.Sequence’ is redundant
      except perhaps to import instances from ‘Data.Sequence’
    To import instances alone, use: import Data.Sequence()
   |
35 | import qualified Data.Sequence as Seq
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

app/Main.hs:36:1: warning: [-Wunused-imports]
    The qualified import of ‘Data.Set’ is redundant
      except perhaps to import instances from ‘Data.Set’
    To import instances alone, use: import Data.Set()
   |
36 | import qualified Data.Set as S
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

app/Main.hs:37:1: warning: [-Wunused-imports]
    The qualified import of ‘Data.Vector’ is redundant
      except perhaps to import instances from ‘Data.Vector’
    To import instances alone, use: import Data.Vector()
   |
37 | import qualified Data.Vector as V
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

app/Main.hs:38:1: warning: [-Wunused-imports]
    The qualified import of ‘Data.Vector.Generic’ is redundant
      except perhaps to import instances from ‘Data.Vector.Generic’
    To import instances alone, use: import Data.Vector.Generic()
   |
38 | import qualified Data.Vector.Generic as VG
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

app/Main.hs:39:1: warning: [-Wunused-imports]
    The qualified import of ‘Data.Vector.Unboxed’ is redundant
      except perhaps to import instances from ‘Data.Vector.Unboxed’
    To import instances alone, use: import Data.Vector.Unboxed()
   |
39 | import qualified Data.Vector.Unboxed as VU
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

app/Main.hs:56:5: warning: [-Wincomplete-patterns]
    Pattern match(es) are non-exhaustive
    In an equation for ‘f’:
        Patterns of type ‘[Char]’, ‘[Char]’, ‘t’ not matched:
            [] _ p where p is not one of {0}
            (_:_) _ p where p is not one of {0}
   |
56 |     f s ans 0 = ans
   |     ^^^^^^^^^^^^^^^...

app/Main.hs:56:7: warning: [-Wunused-matches]
    Defined but not used: ‘s’
   |
56 |     f s ans 0 = ans
   |       ^

app/Main.hs:56:7: warning: [-Wname-shadowing]
    This binding for ‘s’ shadows the existing binding
      bound at app/Main.hs:54:7
   |
56 |     f s ans 0 = ans
   |       ^

app/Main.hs:57:21: warning: [-Wname-shadowing]
    This binding for ‘d’ shadows the existing binding
      bound at app/Main.hs:54:9
   |
57 |     f (sh : st) ans d
   |                     ^

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 200 / 200
Status
AC × 3
AC × 18
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt
All 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_random_00.txt, 01_random_01.txt, 01_random_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 02_handmade_00.txt, 02_handmade_01.txt, 02_handmade_02.txt, 02_handmade_03.txt, 02_handmade_04.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 1 ms 6544 KiB
00_sample_01.txt AC 1 ms 6760 KiB
00_sample_02.txt AC 1 ms 6672 KiB
01_random_00.txt AC 1 ms 6820 KiB
01_random_01.txt AC 1 ms 6724 KiB
01_random_02.txt AC 1 ms 6772 KiB
01_random_03.txt AC 1 ms 6688 KiB
01_random_04.txt AC 1 ms 6784 KiB
01_random_05.txt AC 1 ms 6780 KiB
01_random_06.txt AC 1 ms 6712 KiB
01_random_07.txt AC 1 ms 6556 KiB
01_random_08.txt AC 1 ms 6780 KiB
01_random_09.txt AC 1 ms 6824 KiB
02_handmade_00.txt AC 1 ms 6544 KiB
02_handmade_01.txt AC 1 ms 6748 KiB
02_handmade_02.txt AC 2 ms 6772 KiB
02_handmade_03.txt AC 1 ms 6692 KiB
02_handmade_04.txt AC 1 ms 6756 KiB