Submission #58476117


Source Code Expand

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

module Main where

import Control.Monad (filterM, foldM, foldM_, forM, forM_, replicateM, unless, when)
import Data.Array (Array)
import Data.Array.Base (MArray, UArray (UArray), freezeIOArray, getElems)
import Data.Array.IArray (IArray (bounds), accumArray, array, assocs, listArray, (!))
import qualified Data.Array.IArray as IA
import Data.Array.IO.Internals (IOArray (IOArray), IOUArray (IOUArray))
import Data.Array.MArray (freeze, newArray, readArray, writeArray)
import Data.Bifunctor (Bifunctor (bimap))
import Data.Bool
import Data.ByteString.Char8 (readInt)
import qualified Data.ByteString.Char8 as BC
import qualified Data.Char as C
import Data.Foldable (for_)
import Data.Graph (buildG, dfs)
import qualified Data.Heap as H
import Data.IORef (IORef, modifyIORef', newIORef)
import qualified Data.IntMap as IM
import qualified Data.IntSet as IS
import Data.Ix
import qualified Data.List as L
import Data.List.Extra
import qualified Data.Map.Strict as M
import Data.Maybe (fromJust, fromMaybe, isNothing)
import Data.Ord (Down (Down), comparing)
import Data.Sequence (Seq ((:<|)), (|>))
import qualified Data.Sequence as Seq
import qualified Data.Set as S
import Data.Tree (Tree (subForest), flatten)
import qualified Data.Vector.Algorithms.Intro as VAI
import qualified Data.Vector.Unboxed as VU
import Debug.Trace
import GHC.IO
import System.Environment
import System.Exit

main :: IO ()
main = do
  n <- readLn @Int
  ks <- getInts

  let kss' = subsequences ks
      v = (fromIntegral (sum ks) :: Double) `ceilDiv` 2

  print $ minimum [sk | ks' <- kss', let sk = sum ks', sk >= v]

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

ceilDiv :: Double -> Double -> Int
ceilDiv a b = ceiling $ a / b

{-- 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 C - Separated Lunch
User flowert
Language Haskell (GHC 9.4.5)
Score 300
Code Size 2387 Byte
Status AC
Exec Time 31 ms
Memory 11100 KiB

Compile Error

app/Main.hs:13: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()
   |
13 | import Control.Monad (filterM, foldM, foldM_, forM, forM_, replicateM, unless, when)
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

app/Main.hs:14: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()
   |
14 | import Data.Array (Array)
   | ^^^^^^^^^^^^^^^^^^^^^^^^^

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

app/Main.hs:16: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()
   |
16 | import Data.Array.IArray (IArray (bounds), accumArray, array, assocs, listArray, (!))
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

app/Main.hs:17:1: warning: [-Wunused-imports]
    The qualified 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()
   |
17 | import qualified Data.Array.IArray as IA
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

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

app/Main.hs:19: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()
   |
19 | import Data.Array.MArray (freeze, newArray, readArray, writeArray)
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

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

app/Main.hs:21: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()
   |
21 | import Data.Bool
   | ^^^^^^^^^^^^^^^^

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

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

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

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

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

app/Main.hs:29: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()
   |
29 | import qualified Data.IntMap as IM
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

app/Main.hs:30: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()
   |
30 | import qualified Data.IntSet as IS
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

app/Main.hs:31: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()
   |
31 | import Data.Ix
   | ^^^^^^^^^^^^^^

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

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

app/Main.hs:35: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()
   |
35 | import Data.Maybe (fromJust, fromMaybe, isNothing)
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

app/Main.hs:36: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()
   |
36 | import Data.Ord (Down (Down), comparing)
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

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

app/Main.hs:38: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()
   |
38 | import qualified Data.Sequence as Seq
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

app/Main.hs:39: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()
   |
39 | import qualified Data.Set as S
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

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

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

app/Main.hs:42: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()
   |
42 | import qualified Data.Vector.Unboxed as VU
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

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

app/Main.hs:50:3: warning: [-Wunused-matches]
    Defined but not used: ‘n’
   |
50 |   n <- readLn @Int
   |   ^

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 300 / 300
Status
AC × 3
AC × 30
Set Name Test Cases
Sample example_00.txt, example_01.txt, example_02.txt
All example_00.txt, example_01.txt, example_02.txt, hand_00.txt, hand_01.txt, hand_02.txt, hand_03.txt, hand_04.txt, hand_05.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, random_20.txt
Case Name Status Exec Time Memory
example_00.txt AC 1 ms 6904 KiB
example_01.txt AC 1 ms 6912 KiB
example_02.txt AC 1 ms 6988 KiB
hand_00.txt AC 30 ms 11096 KiB
hand_01.txt AC 31 ms 11080 KiB
hand_02.txt AC 30 ms 11080 KiB
hand_03.txt AC 1 ms 6956 KiB
hand_04.txt AC 31 ms 11092 KiB
hand_05.txt AC 31 ms 11072 KiB
random_00.txt AC 8 ms 11100 KiB
random_01.txt AC 9 ms 11092 KiB
random_02.txt AC 21 ms 10996 KiB
random_03.txt AC 21 ms 10876 KiB
random_04.txt AC 31 ms 10872 KiB
random_05.txt AC 21 ms 11080 KiB
random_06.txt AC 11 ms 11080 KiB
random_07.txt AC 21 ms 11076 KiB
random_08.txt AC 31 ms 10996 KiB
random_09.txt AC 8 ms 11088 KiB
random_10.txt AC 11 ms 11016 KiB
random_11.txt AC 21 ms 11072 KiB
random_12.txt AC 21 ms 11080 KiB
random_13.txt AC 31 ms 10940 KiB
random_14.txt AC 31 ms 11080 KiB
random_15.txt AC 31 ms 11072 KiB
random_16.txt AC 20 ms 11012 KiB
random_17.txt AC 21 ms 11084 KiB
random_18.txt AC 31 ms 11084 KiB
random_19.txt AC 20 ms 11020 KiB
random_20.txt AC 30 ms 11100 KiB