Submission #41239917


Source Code Expand

import Control.Monad
import qualified Data.ByteString.Char8 as BS
import Data.Char
import Data.List

import Data.Array
import qualified Data.IntSet as IS

main = do
  [n,m] <- bsGetLnInts
  fs <- replicateM n (head <$> bsGetLnInts)
  let ans = abc017d n m fs
  print ans

bsGetLnInts :: IO [Int]
bsGetLnInts = unfoldr (BS.readInt . BS.dropWhile isSpace) <$> BS.getLine

abc017d :: Int -> Int -> [Int] -> Int
abc017d n m fs = count ! n
  where
    count = listArray (0,n) $ 1 : loop 0 1 1 IS.empty fs fs
    loop :: Int  -- k : 左端の位置
         -> Int  -- i : 右端、次に値を決めるcount[i]の位置
         -> Int  -- s : kからi-1までのcount[]の総和
         -> IS.IntSet -- is : k+1からiまでにある味の集合
         -> [Int]  -- fks : kの味、以降のリスト
         -> [Int]  -- fis : iの味、以降のリスト
         -> [Int]  -- 答え count[1]~count[N] の値を順に
    loop k i s is fks fis
-- 右の味が尽きたなら、全てを計算し終えた
      | null fis = []
-- 右の味が既にあるなら、左を縮める
      | IS.member fi is = loop (succ k) i (reg $ s - count ! k) (IS.delete fk is) (tail fks) fis
-- まだないなら、取り込んで伸びる。
      | otherwise = s : loop k (succ i) (reg $ s + s) (IS.insert fi is) fks (tail fis)
      where
        fi = head fis -- 次に加入する味
        fk = head fks -- 次に離脱する味

modBase = 1000000007
reg x = mod x modBase

Submission Info

Submission Time
Task D - サプリメント
User joetheshootingst
Language Haskell (GHC 8.8.3)
Score 100
Code Size 1510 Byte
Status AC
Exec Time 137 ms
Memory 37024 KiB

Compile Error

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

Judge Result

Set Name Sample Subtask1 Subtask2
Score / Max Score 0 / 0 30 / 30 70 / 70
Status
AC × 2
AC × 22
AC × 42
Set Name Test Cases
Sample subtask0-sample01.txt, subtask0-sample02.txt
Subtask1 subtask0-sample01.txt, subtask0-sample02.txt, subtask1-01.txt, subtask1-02.txt, subtask1-03.txt, subtask1-04.txt, subtask1-05.txt, subtask1-06.txt, subtask1-07.txt, subtask1-08.txt, subtask1-09.txt, subtask1-10.txt, subtask1-11.txt, subtask1-12.txt, subtask1-13.txt, subtask1-14.txt, subtask1-15.txt, subtask1-16.txt, subtask1-17.txt, subtask1-18.txt, subtask1-19.txt, subtask1-20.txt
Subtask2 subtask0-sample01.txt, subtask0-sample02.txt, subtask1-01.txt, subtask1-02.txt, subtask1-03.txt, subtask1-04.txt, subtask1-05.txt, subtask1-06.txt, subtask1-07.txt, subtask1-08.txt, subtask1-09.txt, subtask1-10.txt, subtask1-11.txt, subtask1-12.txt, subtask1-13.txt, subtask1-14.txt, subtask1-15.txt, subtask1-16.txt, subtask1-17.txt, subtask1-18.txt, subtask1-19.txt, subtask1-20.txt, subtask2-01.txt, subtask2-02.txt, subtask2-03.txt, subtask2-04.txt, subtask2-05.txt, subtask2-06.txt, subtask2-07.txt, subtask2-08.txt, subtask2-09.txt, subtask2-10.txt, subtask2-11.txt, subtask2-12.txt, subtask2-13.txt, subtask2-14.txt, subtask2-15.txt, subtask2-16.txt, subtask2-17.txt, subtask2-18.txt, subtask2-19.txt, subtask2-20.txt
Case Name Status Exec Time Memory
subtask0-sample01.txt AC 5 ms 3624 KiB
subtask0-sample02.txt AC 1 ms 3616 KiB
subtask1-01.txt AC 6 ms 5088 KiB
subtask1-02.txt AC 3 ms 5124 KiB
subtask1-03.txt AC 6 ms 5064 KiB
subtask1-04.txt AC 8 ms 5452 KiB
subtask1-05.txt AC 8 ms 5340 KiB
subtask1-06.txt AC 7 ms 5376 KiB
subtask1-07.txt AC 11 ms 5580 KiB
subtask1-08.txt AC 12 ms 5712 KiB
subtask1-09.txt AC 14 ms 5912 KiB
subtask1-10.txt AC 11 ms 5884 KiB
subtask1-11.txt AC 9 ms 5816 KiB
subtask1-12.txt AC 10 ms 6044 KiB
subtask1-13.txt AC 10 ms 5936 KiB
subtask1-14.txt AC 11 ms 6392 KiB
subtask1-15.txt AC 10 ms 6008 KiB
subtask1-16.txt AC 10 ms 6212 KiB
subtask1-17.txt AC 12 ms 6212 KiB
subtask1-18.txt AC 8 ms 5888 KiB
subtask1-19.txt AC 10 ms 5932 KiB
subtask1-20.txt AC 8 ms 6016 KiB
subtask2-01.txt AC 32 ms 10760 KiB
subtask2-02.txt AC 56 ms 17868 KiB
subtask2-03.txt AC 84 ms 25924 KiB
subtask2-04.txt AC 87 ms 31848 KiB
subtask2-05.txt AC 105 ms 36628 KiB
subtask2-06.txt AC 105 ms 34260 KiB
subtask2-07.txt AC 103 ms 34244 KiB
subtask2-08.txt AC 105 ms 35268 KiB
subtask2-09.txt AC 108 ms 35272 KiB
subtask2-10.txt AC 136 ms 35288 KiB
subtask2-11.txt AC 107 ms 35216 KiB
subtask2-12.txt AC 135 ms 35276 KiB
subtask2-13.txt AC 137 ms 35168 KiB
subtask2-14.txt AC 115 ms 35280 KiB
subtask2-15.txt AC 114 ms 37024 KiB
subtask2-16.txt AC 114 ms 35332 KiB
subtask2-17.txt AC 136 ms 35168 KiB
subtask2-18.txt AC 110 ms 36816 KiB
subtask2-19.txt AC 115 ms 35372 KiB
subtask2-20.txt AC 110 ms 36960 KiB