RCO presents 日本橋ハーフマラソン 本戦

Submission #1173447

Source codeソースコード

import sys
from heapq import heapify, heappush, heappop
from collections import deque

N = 8
loop = 1000
dl = 10
cl = 6
l = 0

def solve():
    ans = deque([])
    for lp in range(loop):
        # Input
        D, T = map(int, input().split())
        C = [int(i) for i in input().split()]
        A = [int(i) for i in input().split()]

        # 出力すべきものが残ってるなら出力する
        if ans:
            print(ans.popleft(), flush=True)
            continue

        # Process
        # まず小さいバケツを探して置き換える
        flag1 = False
        for i in range(l, N):
            if C[i] < cl:
                print('change {}'.format(i + 1), flush=True)
                flag1 = True
                break

        if flag1:
            continue

        # 全てcl以上になったら売りフェーズに入る
        flag2 = False
        if D < dl:
            for i in range(N):
                if A[i] == 0:
                    print('fill {}'.format(i + 1), flush=True)
                    flag2 = True
                    break
            else:
                print('pass', flush=True)
                flag2 = True
        else:
            num_n, need, cmb = canmake(D, T, C, A)

            if need is not None:
                for i in need:
                    ans.append('fill {}'.format(i + 1))
                selw = 'sell {}'.format(len(cmb))
                for c in cmb:
                    selw += ' ' + str(c + 1)
                ans.append(selw)

                print(ans.popleft(), flush=True)
                flag2 = True
            else:
                print('pass', flush=True)
                flag2 = True

        if flag2:
            continue

def canmake(D, T, C, A):
    uni = 2**N
    res = None
    max_fill = 10
    num_need = 10
    res_cmb = []

    for cmd in range(uni):
        val = 0
        restmp = []
        cmbtmp = []
        numtmp = 0

        for i in range(N):
            if cmd & (1 << i):
                val += C[i]
                numtmp += 1
                cmbtmp.append(i)
                if A[i] != C[i]:
                    restmp.append(i)

        if val == D and len(restmp) < max_fill:
            num_need = numtmp
            max_fill = len(restmp)
            res = restmp[:]
            res_cmb = cmbtmp[:]

    if max_fill + 1 < T:
        return numtmp, res, res_cmb
    else:
        return None, None, None

def debug(x, table):
    for name, val in table.items():
        if x is val:
            print('DEBUG:{} -> {}'.format(name, val), file=sys.stderr)
            return None

if __name__ == '__main__':
    solve()

Submission

Task問題 A - 石油王Xの憂鬱
User nameユーザ名 nanae
Created time投稿日時
Language言語 Python3 (3.4.3)
Status状態 AC
Score得点 4940616
Source lengthソースコード長 2754 Byte
File nameファイル名
Exec time実行時間 290 ms
Memory usageメモリ使用量 4156 KB

Test case

Set

Set name Score得点 / Max score Cases
test_01 101980 / 417500 subtask_01_01.txt
test_02 101716 / 417500 subtask_01_02.txt
test_03 112129 / 417500 subtask_01_03.txt
test_04 94828 / 417500 subtask_01_04.txt
test_05 97109 / 417500 subtask_01_05.txt
test_06 101006 / 417500 subtask_01_06.txt
test_07 103046 / 417500 subtask_01_07.txt
test_08 98986 / 417500 subtask_01_08.txt
test_09 96484 / 417500 subtask_01_09.txt
test_10 101784 / 417500 subtask_01_10.txt
test_11 109429 / 417500 subtask_01_11.txt
test_12 95209 / 417500 subtask_01_12.txt
test_13 98907 / 417500 subtask_01_13.txt
test_14 94649 / 417500 subtask_01_14.txt
test_15 99271 / 417500 subtask_01_15.txt
test_16 93585 / 417500 subtask_01_16.txt
test_17 96701 / 417500 subtask_01_17.txt
test_18 92098 / 417500 subtask_01_18.txt
test_19 105498 / 417500 subtask_01_19.txt
test_20 95983 / 417500 subtask_01_20.txt
test_21 100104 / 417500 subtask_01_21.txt
test_22 99254 / 417500 subtask_01_22.txt
test_23 93235 / 417500 subtask_01_23.txt
test_24 95698 / 417500 subtask_01_24.txt
test_25 102342 / 417500 subtask_01_25.txt
test_26 93947 / 417500 subtask_01_26.txt
test_27 96470 / 417500 subtask_01_27.txt
test_28 105034 / 417500 subtask_01_28.txt
test_29 95283 / 417500 subtask_01_29.txt
test_30 102634 / 417500 subtask_01_30.txt
test_31 101803 / 417500 subtask_01_31.txt
test_32 98677 / 417500 subtask_01_32.txt
test_33 94046 / 417500 subtask_01_33.txt
test_34 100561 / 417500 subtask_01_34.txt
test_35 101203 / 417500 subtask_01_35.txt
test_36 105981 / 417500 subtask_01_36.txt
test_37 99960 / 417500 subtask_01_37.txt
test_38 94704 / 417500 subtask_01_38.txt
test_39 104538 / 417500 subtask_01_39.txt
test_40 90002 / 417500 subtask_01_40.txt
test_41 98784 / 417500 subtask_01_41.txt
test_42 93139 / 417500 subtask_01_42.txt
test_43 102340 / 417500 subtask_01_43.txt
test_44 90017 / 417500 subtask_01_44.txt
test_45 97391 / 417500 subtask_01_45.txt
test_46 102697 / 417500 subtask_01_46.txt
test_47 94212 / 417500 subtask_01_47.txt
test_48 94182 / 417500 subtask_01_48.txt
test_49 100481 / 417500 subtask_01_49.txt
test_50 101499 / 417500 subtask_01_50.txt

Test case

Case name Status状態 Exec time実行時間 Memory usageメモリ使用量
subtask_01_01.txt AC 224 ms 4156 KB
subtask_01_02.txt AC 219 ms 3784 KB
subtask_01_03.txt AC 225 ms 3780 KB
subtask_01_04.txt AC 229 ms 3776 KB
subtask_01_05.txt AC 225 ms 3780 KB
subtask_01_06.txt AC 217 ms 3648 KB
subtask_01_07.txt AC 237 ms 3780 KB
subtask_01_08.txt AC 281 ms 3784 KB
subtask_01_09.txt AC 223 ms 3780 KB
subtask_01_10.txt AC 215 ms 3784 KB
subtask_01_11.txt AC 212 ms 3780 KB
subtask_01_12.txt AC 216 ms 3780 KB
subtask_01_13.txt AC 219 ms 3780 KB
subtask_01_14.txt AC 215 ms 3648 KB
subtask_01_15.txt AC 213 ms 3776 KB
subtask_01_16.txt AC 233 ms 3780 KB
subtask_01_17.txt AC 209 ms 3780 KB
subtask_01_18.txt AC 226 ms 3776 KB
subtask_01_19.txt AC 214 ms 3776 KB
subtask_01_20.txt AC 209 ms 3780 KB
subtask_01_21.txt AC 238 ms 3784 KB
subtask_01_22.txt AC 219 ms 3652 KB
subtask_01_23.txt AC 216 ms 3780 KB
subtask_01_24.txt AC 225 ms 3776 KB
subtask_01_25.txt AC 215 ms 3784 KB
subtask_01_26.txt AC 221 ms 3780 KB
subtask_01_27.txt AC 229 ms 3784 KB
subtask_01_28.txt AC 213 ms 3656 KB
subtask_01_29.txt AC 222 ms 3652 KB
subtask_01_30.txt AC 222 ms 3652 KB
subtask_01_31.txt AC 218 ms 3784 KB
subtask_01_32.txt AC 223 ms 3780 KB
subtask_01_33.txt AC 211 ms 3780 KB
subtask_01_34.txt AC 213 ms 3780 KB
subtask_01_35.txt AC 220 ms 3780 KB
subtask_01_36.txt AC 223 ms 3780 KB
subtask_01_37.txt AC 218 ms 3780 KB
subtask_01_38.txt AC 218 ms 3780 KB
subtask_01_39.txt AC 201 ms 3776 KB
subtask_01_40.txt AC 224 ms 3780 KB
subtask_01_41.txt AC 217 ms 3780 KB
subtask_01_42.txt AC 233 ms 3780 KB
subtask_01_43.txt AC 209 ms 3780 KB
subtask_01_44.txt AC 235 ms 3780 KB
subtask_01_45.txt AC 290 ms 3784 KB
subtask_01_46.txt AC 222 ms 3780 KB
subtask_01_47.txt AC 240 ms 3780 KB
subtask_01_48.txt AC 228 ms 3780 KB
subtask_01_49.txt AC 214 ms 3780 KB
subtask_01_50.txt AC 214 ms 3780 KB