1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | module Main where import Control.Applicative import Control.Monad import Data.Char import Data.List import Text.ParserCombinators.ReadP import Text.Printf type Name = String type Marks = [Int] type AvgMark = Float data Student = Student Name Marks deriving (Show) nameP :: ReadP String nameP = many1 $ satisfy isLetter markP :: ReadP Int markP = read <$> many1 (satisfy isDigit) lexeme :: ReadP a -> ReadP a lexeme p = do l <- p skipSpaces return l studentP :: ReadP Student studentP = liftM2 Student (lexeme nameP) (count 3 $ lexeme markP) parseStudent :: String -> Maybe Student parseStudent s = case readP_to_S studentP s of [] -> Nothing a:_ -> Just $ fst a avg :: Integral a => [a] -> Float avg xs = (sum $ fromIntegral <$> xs) / (fromIntegral $ length xs) showStudent (Student name marks) = printf "%s %.1f" name $ avg marks main = do putStrLn "Введите число студентов:" n <- readLn when (n < 0) $ fail "Нужно положительное число!" when (n > 7) $ fail "Не больше 7!" putStrLn "Введите имена и оценки:" students <- sortBy (\(Student _ m1) (Student _ m2) -> compare (avg m2) (avg m1)) <$> replicateM n (ensure =<< parseStudent <$> getLine) putStrLn "Достаточно." putStrLn "список студентов:" forM_ students $ \s -> putStrLn $ showStudent s return () where ensure s = case s of Just a -> return a Nothing -> fail "Нихуя не могу разобрать что ты там написал." |
bW9kdWxlIE1haW4gd2hlcmUKCmltcG9ydCBDb250cm9sLkFwcGxpY2F0aXZlIAppbXBvcnQgQ29udHJvbC5Nb25hZAppbXBvcnQgRGF0YS5DaGFyCmltcG9ydCBEYXRhLkxpc3QKaW1wb3J0IFRleHQuUGFyc2VyQ29tYmluYXRvcnMuUmVhZFAKaW1wb3J0IFRleHQuUHJpbnRmCgp0eXBlIE5hbWUgICAgPSBTdHJpbmcKdHlwZSBNYXJrcyAgID0gW0ludF0gCnR5cGUgQXZnTWFyayA9IEZsb2F0CgpkYXRhIFN0dWRlbnQgPSBTdHVkZW50IE5hbWUgTWFya3MgZGVyaXZpbmcgKFNob3cpCgpuYW1lUCA6OiBSZWFkUCBTdHJpbmcKbmFtZVAgPSBtYW55MSAkIHNhdGlzZnkgaXNMZXR0ZXIKCm1hcmtQIDo6IFJlYWRQIEludAptYXJrUCA9IHJlYWQgPCQ+IG1hbnkxIChzYXRpc2Z5IGlzRGlnaXQpCgpsZXhlbWUgOjogUmVhZFAgYSAtPiBSZWFkUCBhIApsZXhlbWUgcCA9IGRvIAogICAgbCA8LSBwCiAgICBza2lwU3BhY2VzCiAgICByZXR1cm4gbAoKc3R1ZGVudFAgOjogUmVhZFAgU3R1ZGVudApzdHVkZW50UCA9IGxpZnRNMiBTdHVkZW50IChsZXhlbWUgbmFtZVApIChjb3VudCAzICQgbGV4ZW1lIG1hcmtQKQoKcGFyc2VTdHVkZW50IDo6IFN0cmluZyAtPiBNYXliZSBTdHVkZW50CnBhcnNlU3R1ZGVudCBzID0gY2FzZSByZWFkUF90b19TIHN0dWRlbnRQIHMgb2YKICAgICAgICAgICAgICAgICAgICBbXSAgLT4gTm90aGluZwogICAgICAgICAgICAgICAgICAgIGE6XyAtPiBKdXN0ICQgZnN0IGEgICAgCiAgIAphdmcgOjogSW50ZWdyYWwgYSA9PiBbYV0gLT4gRmxvYXQKYXZnIHhzID0gKHN1bSAkIGZyb21JbnRlZ3JhbCA8JD4geHMpIC8gKGZyb21JbnRlZ3JhbCAkIGxlbmd0aCB4cykKICAgICAgICAgICAgICAKc2hvd1N0dWRlbnQgKFN0dWRlbnQgbmFtZSBtYXJrcykgPSBwcmludGYgIiVzICUuMWYiIG5hbWUgJCBhdmcgbWFya3MgCiAgICAgICAgICAgICAgICAgICAgCm1haW4gPSBkbwogICAgcHV0U3RyTG4gItCS0LLQtdC00LjRgtC1INGH0LjRgdC70L4g0YHRgtGD0LTQtdC90YLQvtCyOiIgCiAgICBuIDwtIHJlYWRMbiAKICAgIHdoZW4gKG4gPCAwKSAkIGZhaWwgItCd0YPQttC90L4g0L/QvtC70L7QttC40YLQtdC70YzQvdC+0LUg0YfQuNGB0LvQviEiCiAgICB3aGVuIChuID4gNykgJCBmYWlsICLQndC1INCx0L7Qu9GM0YjQtSA3ISIKICAgIHB1dFN0ckxuICLQktCy0LXQtNC40YLQtSDQuNC80LXQvdCwINC4INC+0YbQtdC90LrQuDoiCiAgICBzdHVkZW50cyA8LSBzb3J0QnkgKFwoU3R1ZGVudCBfIG0xKSAoU3R1ZGVudCBfIG0yKSAtPiBjb21wYXJlIChhdmcgbTIpIChhdmcgbTEpKSA8JD4gcmVwbGljYXRlTSBuIChlbnN1cmUgPTw8IHBhcnNlU3R1ZGVudCA8JD4gZ2V0TGluZSkKICAgIHB1dFN0ckxuICLQlNC+0YHRgtCw0YLQvtGH0L3Qvi4iCiAgICBwdXRTdHJMbiAi0YHQv9C40YHQvtC6INGB0YLRg9C00LXQvdGC0L7QsjoiCiAgICBmb3JNXyBzdHVkZW50cyAkIFxzIC0+IHB1dFN0ckxuICQgc2hvd1N0dWRlbnQgcwogICAgcmV0dXJuICgpCiAgICB3aGVyZQogICAgICAgIGVuc3VyZSBzID0gY2FzZSBzIG9mCiAgICAgICAgICAgIEp1c3QgYSAgLT4gcmV0dXJuIGEKICAgICAgICAgICAgTm90aGluZyAtPiBmYWlsICLQndC40YXRg9GPINC90LUg0LzQvtCz0YMg0YDQsNC30L7QsdGA0LDRgtGMINGH0YLQviDRgtGLINGC0LDQvCDQvdCw0L/QuNGB0LDQuy4i
-
upload with new input
-
result: Runtime error time: 0.01s memory: 3852 kB signal: -1
3 YOBA 3 3 4 ETO 2 2 1 TI? 4 4 5
2548B5 G8A;> ABC45=B>2: 2548B5 8<5=0 8 >F5=:8:
prog: user error (8ECO =5 <>3C @07>1@0BL GB> BK B0< =0?8A0;.)
-
result: Success time: 0.02s memory: 3852 kB returned value: 0
3 Krokodil 3 3 4 Zalupa 2 2 1 Sir 4 4 5
2548B5 G8A;> ABC45=B>2: 2548B5 8<5=0 8 >F5=:8: >AB0B>G=>. A?8A>: ABC45=B>2: Sir 4.3 Krokodil 3.3 Zalupa 1.7
-
result: Runtime error time: 0.01s memory: 3852 kB signal: -1
3 Крокодил 3 3 4 Залупа 2 2 1 Сыр 4 4 5
2548B5 G8A;> ABC45=B>2: 2548B5 8<5=0 8 >F5=:8:
prog: user error (8ECO =5 <>3C @07>1@0BL GB> BK B0< =0?8A0;.)



