Done several tasks
[cses-programming-tasks.git] / app / cses1623.hs
diff --git a/app/cses1623.hs b/app/cses1623.hs
new file mode 100644 (file)
index 0000000..7121018
--- /dev/null
@@ -0,0 +1,18 @@
+import Data.List (sort)
+
+main :: IO ()
+main = do
+  line1 <- getLine
+  line2 <- getLine
+  let nums = reverse $ sort $ map read $ words line2 :: [Int]
+  print $ solve nums
+
+
+solve (x:xs) = minimum diffs
+  where s = x + sum xs
+        ys = powerSet xs
+        diffs = [abs (s - 2 * (sum y)) | y <- ys]
+
+powerSet :: [a] -> [[a]]
+powerSet [] = [[]]
+powerSet (x:xs) = powerSet xs ++ map (x:) (powerSet xs)