QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#49022#2281. BnPCTiceTL 30ms8452kbPython31.6kb2022-09-19 05:18:542022-09-19 05:18:56

Judging History

你现在查看的是最新测评结果

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2022-09-19 05:18:56]
  • 评测
  • 测评结果:TL
  • 用时:30ms
  • 内存:8452kb
  • [2022-09-19 05:18:54]
  • 提交

answer

def totalPoints():  # calculate total points
    total = 0
    if len(events) > 0:
        for i in range(len(events)):
            if attributes[events[i]["name"]] > events[i]["points"]:
                total += attributes[events[i]["name"]]
    return total


line = input().split(" ")
attrAmount = int(line[0])
points = int(line[1])
attributes = {}
for i in range(attrAmount):
    new = input().split(" ")
    attributes[new[0]] = int(new[1])

amountOfEvents = int(input())
events = []
highestEvents = {}
for i in range(amountOfEvents):
    new = input().split(" ")
    if new[0] not in highestEvents or int(new[1]) > highestEvents[new[0]]:
        highestEvents[new[0]] = int(new[1])
    events.append({
        "name": new[0],
        "points": int(new[1])
    })

pointsNeeded = 0
for currentAttr in attributes:
    pointsNeeded += highestEvents[currentAttr] - attributes[currentAttr]

if pointsNeeded > points:  # check if we have enough points to pass
    print(0)
    exit(0)

for currentAttr in attributes:  # assign enough point to every attribute to pass
    diff = highestEvents[currentAttr] - attributes[currentAttr]
    if diff > 0:
        attributes[currentAttr] += diff
        points -= diff

for i in range(points):
    attributesBackUp = attributes.copy()
    attributesResult = {}
    for currentAttr in attributes:
        attributes[currentAttr] += 1
        attributesResult[currentAttr] = totalPoints()
        attributes = attributesBackUp.copy()
    best = max(attributesResult, key=attributesResult.get)
    attributes[best] += 1

print(totalPoints())

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 13ms
memory: 8288kb

input:

3 14
THISISTHEONE 8
B 0
C 0
8
THISISTHEONE 10
C 0
B 1
B 0
THISISTHEONE 0
C 1
THISISTHEONE 0
THISISTHEONE 0

output:

82

result:

ok single line: '82'

Test #2:

score: 0
Accepted
time: 8ms
memory: 8316kb

input:

3 99
THEFIRSTINCREASE 6
SECONDINCREASE 4
ZZZ 1
9
THEFIRSTINCREASE 4
ZZZ 0
THEFIRSTINCREASE 6
SECONDINCREASE 8
THEFIRSTINCREASE 2
SECONDINCREASE 1
ZZZ 0
SECONDINCREASE 8
THEFIRSTINCREASE 3

output:

429

result:

ok single line: '429'

Test #3:

score: 0
Accepted
time: 30ms
memory: 8452kb

input:

5 20
A 100
B 200
C 300
D 400
E 500
949
A 39
A 23
C 163
A 98
B 36
A 3
A 52
B 152
B 167
B 65
C 142
B 66
B 117
C 288
C 155
E 341
A 97
D 173
E 31
A 62
D 90
E 361
A 42
D 85
E 1
C 141
B 77
B 194
D 221
E 203
D 345
E 48
B 26
D 46
B 74
E 380
B 181
C 243
B 112
A 99
E 403
C 20
E 453
C 149
B 26
E 245
A 74
D 304...

output:

285180

result:

ok single line: '285180'

Test #4:

score: 0
Accepted
time: 25ms
memory: 8304kb

input:

2 1
A 10
B 12
3
A 10
B 10
B 10

output:

35

result:

ok single line: '35'

Test #5:

score: 0
Accepted
time: 12ms
memory: 8316kb

input:

1 1
OVERENTHUSIASTICNESS 41
1
OVERENTHUSIASTICNESS 0

output:

42

result:

ok single line: '42'

Test #6:

score: -100
Time Limit Exceeded

input:

100000 1000000000
A 1000000000
B 1000000000
C 1000000000
D 1000000000
E 1000000000
F 1000000000
G 1000000000
H 1000000000
I 1000000000
J 1000000000
K 1000000000
L 1000000000
M 1000000000
N 1000000000
O 1000000000
P 1000000000
Q 1000000000
R 1000000000
S 1000000000
T 1000000000
U 1000000000
V 1000000...

output:


result: