Done some puzzles
[cses-programming-tasks.git] / app / cses1092.hs
diff --git a/app/cses1092.hs b/app/cses1092.hs
new file mode 100644 (file)
index 0000000..5676512
--- /dev/null
@@ -0,0 +1,18 @@
+main :: IO ()
+main = do
+  line1 <- getLine
+  let n = read line1
+  let solution = solve n
+  putStrLn $ showSolution solution
+
+solve :: Int -> Maybe ([Int] , [Int])
+solve n
+  | n `mod` 4 == 0 = Just (mconcat [[k, n - k + 1] | k <- [1, 3 .. (n `div` 2)]], 
+                           mconcat [[k, n - k + 1] | k <- [2, 4 .. (n `div` 2)]])
+  | n `mod` 4 == 3 = Just (mconcat [[k, n - k] | k <- [1, 3 .. (n `div` 2)]], 
+                           n : (mconcat [[k, n - k] | k <- [2, 4 .. (n `div` 2)]]))
+  | otherwise = Nothing
+
+showSolution Nothing = "NO"
+showSolution (Just (ns, ms)) = "YES\n" ++ (showNums ns) ++ "\n" ++ (showNums ms)
+  where showNums ks = (show $ length ks) ++ "\n" ++ (unwords $ map show ks)