import Data.List
calc' :: [(Int,Int)] -> Int -> Int -> Int
calc' _ p acc | p == 0 = acc
calc' _ p acc | p < 0 = acc-1
calc' ((_,w):rest) p acc = calc' rest (p-w) (acc+1)
calc :: [Int] -> [Int] -> Int -> Int
calc d c p =
let pairs = sort $ zip d c
in
calc' pairs p 0
main = do
aW1wb3J0IENvbnRyb2wuTW9uYWQKaW1wb3J0IERhdGEuTGlzdAoKY2FsYycgOjogWyhJbnQsSW50KV0gLT4gSW50IC0+IEludCAtPiBJbnQKY2FsYycgXyBwIGFjYyB8IHAgPT0gMCA9IGFjYwpjYWxjJyBfIHAgYWNjIHwgcCA8IDAgPSBhY2MtMQpjYWxjJyAoKF8sdyk6cmVzdCkgcCBhY2MgPSBjYWxjJyByZXN0IChwLXcpIChhY2MrMSkKCmNhbGMgOjogW0ludF0gLT4gW0ludF0gLT4gSW50IC0+IEludApjYWxjIGQgYyBwID0KICBsZXQgcGFpcnMgPSBzb3J0ICQgemlwIGQgYwogIGluCiAgICBjYWxjJyBwYWlycyBwIDAKCm1haW4gPSBkbwogIGxpbmUgPC0gZ2V0TGluZQogIGxldCBkID0gbWFwIHJlYWQgJCB3b3JkcyBsaW5lCiAgbGluZSA8LSBnZXRMaW5lCiAgbGV0IGMgPSBtYXAgcmVhZCAkIHdvcmRzIGxpbmUKICBsaW5lIDwtIGdldExpbmUKICBsZXQgcCA9IHJlYWQgbGluZQogIHByaW50ICQgY2FsYyBkIGMgcAo=