結果
問題 |
No.510 二次漸化式
|
ユーザー |
![]() |
提出日時 | 2017-04-29 00:34:45 |
言語 | Haskell (9.10.1) |
結果 |
TLE
|
実行時間 | - |
コード長 | 903 bytes |
コンパイル時間 | 6,738 ms |
コンパイル使用メモリ | 172,800 KB |
実行使用メモリ | 21,408 KB |
最終ジャッジ日時 | 2024-09-13 18:54:59 |
合計ジャッジ時間 | 10,879 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | TLE * 1 -- * 33 |
コンパイルメッセージ
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
ソースコード
main = do n <- readLn :: IO Integer q <- readLn :: IO Integer qs <- map words . lines <$> getContents mapM_ print (process qs) process :: [[String]] -> [Integer] process = reverse . fst . foldl exec ([],(x,y)) a :: [Integer] -> [Integer] -> Int -> Integer a x y 0 = 1 a x y i = (x !! (i-1)) * (b x y (i-1))^2 + a x y (i-1) b :: [Integer] -> [Integer] -> Int -> Integer b x y 0 = 1 b x y i = (y !! (i-1)) * b x y (i-1) + 1 x :: [Integer] x = repeat 0 y :: [Integer] y = repeat 0 exec :: ([Integer],([Integer],[Integer])) -> [String] -> ([Integer],([Integer],[Integer])) exec (acc,(xn,yn)) q = case q of ["x",i,v] -> (acc, (replace (read i) (read v) xn, yn)) ["y",i,v] -> (acc, (xn, replace (read i) (read v) yn)) ["a",i] -> (a xn yn (read i) `mod` (10^9+7) : acc, (xn,yn)) replace :: Int -> Integer -> [Integer] -> [Integer] replace i v xs = let (x1,(_:x2)) = splitAt i xs in x1 ++ [v] ++ x2