Submission #287540


Source Code Expand

def depth_first_search(w, n, k, ABs):
    def _greedy_by_width(index, w):
        val = 0
        width = 0
        for a, b in ABs[index:]:
            if a > w:
                continue
            elif width + a < w:
                width += a
                val += b
            else:
                val += b * (w - width) * 1.0 / (a*1.0)
                break
        return val
    
    def _greedy_by_num(index, k):
        bs = Bs[index:]
        bs.sort(reverse=True)
        return sum(bs[:k])
 
    def _dfs(w, index, k, val, best_val):
        if val > best_val[0]:
            best_val[0] = val
        if k == 0 or index == n:
            return
        a, b = ABs[index]
        dif = best_val[0] - val
        if _greedy_by_width(index, w) <= dif:
            return
        if _greedy_by_num(index, k) <= dif:
            return
        if w >= a:
            _dfs(w - a, index + 1, k - 1, val + b, best_val)
        _dfs(w, index + 1, k, val, best_val)
 
    Bs = [b for a, b in ABs]
    best_val = [0]
    index = 0
    val = 0
    _dfs(w, index, k, val, best_val)
    return best_val[0]
 
 
def read_problem():
    W = int(raw_input())
    N, K = map(int, raw_input().split())
    ABs = []
    for i in range(N):
        ABs.append(tuple(map(int, raw_input().split())))
    return W, N, K, ABs
 
if __name__ == '__main__':
    W, N, K, ABs = read_problem()
    ABs.sort(key=lambda x: x[1] * 1.0 / (x[0] * 1.0), reverse=True)
    ans = depth_first_search(W, N, K, ABs)
    print(ans)

Submission Info

Submission Time
Task D - 高橋くんの苦悩
User hyas
Language Python (2.7.3)
Score 100
Code Size 1559 Byte
Status AC
Exec Time 66 ms
Memory 3516 KiB

Judge Result

Set Name All
Score / Max Score 100 / 100
Status
AC × 44
Set Name Test Cases
All sample_01.txt, sample_02.txt, sample_03.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt, test_36.txt, test_37.txt, test_38.txt, test_39.txt, test_40.txt, test_41.txt
Case Name Status Exec Time Memory
sample_01.txt AC 51 ms 3440 KiB
sample_02.txt AC 53 ms 3444 KiB
sample_03.txt AC 53 ms 3496 KiB
test_01.txt AC 52 ms 3500 KiB
test_02.txt AC 51 ms 3504 KiB
test_03.txt AC 51 ms 3500 KiB
test_04.txt AC 50 ms 3508 KiB
test_05.txt AC 50 ms 3500 KiB
test_06.txt AC 51 ms 3492 KiB
test_07.txt AC 53 ms 3508 KiB
test_08.txt AC 50 ms 3508 KiB
test_09.txt AC 50 ms 3508 KiB
test_10.txt AC 57 ms 3452 KiB
test_11.txt AC 50 ms 3500 KiB
test_12.txt AC 52 ms 3508 KiB
test_13.txt AC 51 ms 3504 KiB
test_14.txt AC 53 ms 3508 KiB
test_15.txt AC 51 ms 3508 KiB
test_16.txt AC 50 ms 3504 KiB
test_17.txt AC 52 ms 3504 KiB
test_18.txt AC 50 ms 3504 KiB
test_19.txt AC 51 ms 3496 KiB
test_20.txt AC 51 ms 3448 KiB
test_21.txt AC 58 ms 3440 KiB
test_22.txt AC 52 ms 3508 KiB
test_23.txt AC 55 ms 3440 KiB
test_24.txt AC 52 ms 3448 KiB
test_25.txt AC 52 ms 3512 KiB
test_26.txt AC 50 ms 3452 KiB
test_27.txt AC 51 ms 3516 KiB
test_28.txt AC 50 ms 3516 KiB
test_29.txt AC 51 ms 3448 KiB
test_30.txt AC 66 ms 3504 KiB
test_31.txt AC 52 ms 3452 KiB
test_32.txt AC 65 ms 3504 KiB
test_33.txt AC 53 ms 3508 KiB
test_34.txt AC 52 ms 3508 KiB
test_35.txt AC 51 ms 3452 KiB
test_36.txt AC 49 ms 3452 KiB
test_37.txt AC 51 ms 3492 KiB
test_38.txt AC 52 ms 3500 KiB
test_39.txt AC 55 ms 3440 KiB
test_40.txt AC 51 ms 3512 KiB
test_41.txt AC 57 ms 3516 KiB