Submission #1592706


Source Code Expand

import fractions

n, ma, mb = map(int,input().split())
a = [0] * (n + 1)
b = [0] * (n + 1)
c = [0] * (n + 1)
for i in range(1, n + 1):
    a[i], b[i], c[i] = map(int,input().split())

#iまでの薬品で、aがj(g),bがk(g)となるときの最小コスト
dp = [[[10 ** 15 for i in range(n + 1)] for j in range(401)] \
    for k in range(401)]

dp[0][0][0] = 0
sa = [0] * (n + 1)
sb = [0] * (n + 1)

for i in range(1, n + 1):
    for j in range(401):
        for k in range(401):
            if j < a[i] or k < b[i]:
                dp[k][j][i] = dp[k][j][i - 1]
            else:
                dp[k][j][i] = min(dp[k][j][i - 1], \
                    dp[k - b[i]][j - a[i]][i - 1] + c[i])

i = 1
ans = 10 ** 15
while True:
    if i * ma > 400 or i * mb > 400:
        break
    ans = min(ans, dp[i * mb][i * ma][n])
    i += 1

if ans == 10 ** 15:
    ans = -1

print(ans)

"""
import fractions

n, ma, mb = map(int,input().split())
a = [0] * (n + 1)
b = [0] * (n + 1)
c = [0] * (n + 1)
for i in range(1, n + 1):
    a[i], b[i], c[i] = map(int,input().split())

#iまでの薬品で、aがj(g),bがk(g)となるときの最小コスト
dp = [[[10 ** 15 for i in range(n + 1)] for j in range(401)] \
    for k in range(401)]

dp[0][0][0] = 0
sa = [0] * (n + 1)
sb = [0] * (n + 1)

for i in range(1, n + 1):
    sa[i] = sa[i - 1] + a[i]
    sb[i] = sb[i - 1] + b[i]

for i in range(1, n + 1):
    for j in range(sa[i] + 1):
        for k in range(sb[i] + 1):
            if j < a[i] or k < b[i]:
                dp[k][j][i] = dp[k][j][i - 1]
            else:
                dp[k][j][i] = min(dp[k][j][i - 1], \
                    dp[k - b[i]][j - a[i]][i - 1] + c[i])

i = 1
ans = 10 ** 15
while True:
    if i * ma > 400 or i * mb > 400:
        break
    ans = min(ans, dp[i * mb][i * ma][n])
    i += 1

if ans == 10 ** 15:
    ans = -1

print(ans)
"""

Submission Info

Submission Time
Task D - Mixing Experiment
User ophelia
Language PyPy3 (2.4.0)
Score 400
Code Size 1945 Byte
Status AC
Exec Time 1864 ms
Memory 136920 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 400 / 400
Status
AC × 2
AC × 20
Set Name Test Cases
Sample sample_01.txt, sample_02.txt
All sample_01.txt, sample_02.txt, subtask_1_01.txt, subtask_1_02.txt, subtask_1_03.txt, subtask_1_04.txt, subtask_1_05.txt, subtask_1_06.txt, subtask_1_07.txt, subtask_1_08.txt, subtask_1_09.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_12.txt, subtask_1_13.txt, subtask_1_14.txt, subtask_1_15.txt, subtask_1_16.txt, subtask_1_17.txt, subtask_1_18.txt
Case Name Status Exec Time Memory
sample_01.txt AC 401 ms 83928 KB
sample_02.txt AC 352 ms 84184 KB
subtask_1_01.txt AC 471 ms 88920 KB
subtask_1_02.txt AC 373 ms 83800 KB
subtask_1_03.txt AC 475 ms 89176 KB
subtask_1_04.txt AC 646 ms 99800 KB
subtask_1_05.txt AC 725 ms 99672 KB
subtask_1_06.txt AC 1007 ms 111704 KB
subtask_1_07.txt AC 1089 ms 111448 KB
subtask_1_08.txt AC 1197 ms 111704 KB
subtask_1_09.txt AC 1323 ms 123864 KB
subtask_1_10.txt AC 1388 ms 124120 KB
subtask_1_11.txt AC 1746 ms 136792 KB
subtask_1_12.txt AC 1657 ms 136792 KB
subtask_1_13.txt AC 1705 ms 136792 KB
subtask_1_14.txt AC 1664 ms 136792 KB
subtask_1_15.txt AC 1657 ms 136792 KB
subtask_1_16.txt AC 1651 ms 136792 KB
subtask_1_17.txt AC 1656 ms 136920 KB
subtask_1_18.txt AC 1864 ms 136920 KB