fork download
  1. import Data.Time
  2. import Data.List
  3. import Data.Function
  4.  
  5. solve nums maxlen = nub $ concat $ concatMap (mkPair . map snd) $ filter noOne $
  6. groupBy ((==) `on` fst) $ sortBy (compare `on` fst) $
  7. map (\a -> (sum a,a)) $
  8. filter ((<=maxlen).length) $ tail $ subsequences nums
  9. where noOne [x] = False
  10. noOne _ = True
  11. mkPair [x,y] = [[(x,y)]]
  12. mkPair (x:xs) = map ((,)x) xs : mkPair xs
  13.  
  14. main:: IO ()
  15. main = do
  16. begT <- getCurrentTime
  17. print $ take 1 $ reverse $ solve [1..12] 6
  18. endT <- getCurrentTime
  19. print $ diffUTCTime endT begT
Time limit exceeded #stdin #stdout 5s 7288KB
stdin
Standard input is empty
stdout
Standard output is empty