Code Viblo Role Playing Game

Link

Đề bài

An bị mắc kẹt không thể nào vượt qua được ở một level của game The Lost Symbol. Anh ấy phải đạnh bại được tất cả n golem thì sẽ được qua level tiếp theo. Anh ấy và những con golem có chiều dài là một số nguyên. Trong cuộc đấu tay đôi giữa 2 đối thủ, ai có sức mạnh hơn thì sẽ tháng. Ban đầu sức mạnh của An là s.

Nêu anh ấy bắt đầu đấu tay đôi với golem thứ i (1 ≤ i ≤ n) và sức mạnh của anh ấy không lớn hơn sức mạnh của golem thứ i thì anh ấy sẽ thua và chết. Ngược lại, anh ấy đánh bại con golem và sẽ nhận thêm sức mạnh bằng y_i

Anh ấy có thể đánh những con golem theo bất kể thứu tự nào. Hãy xác định xem anh ấy có thể chuyển sang level tiếp theo hay không tức là phải đánh bại tất cả các con golem và không thua một lần nào.

Input
Dòng đầu tiên chứa 2 số nguyên s và n cách nhau bởi khoảng trống(1 ≤ s ≤ 10^4, 1 ≤ n ≤ 10^3).

n dòng tiếp theo : dòng i chứa x_i và y_i cách nhau bởi khoảng trống (1 ≤ x_ix ≤ 10^4, 0 ≤ y_i ≤ 10^4) - sức mạnh của con golem thứ i và điểm thưởng cho mỗi lần đánh bại chúng.

Output
In ra “YES” nếu An có thể sang được level tiếp theo và “NO” nếu anh ấy không thể.

Resource limits
Execution time: 2 seconds

Memory: 256.00 MB

Lời giải

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import sys

input_str = ""

first = True
golem = []
score = []

for line in sys.stdin:
if first:
first = False
s = int(line.split(' ')[0])
n = int(line.split(' ')[1])
else:
item_golem = line.split(' ')[0]
item_score = line.split(' ')[1]
golem += [int(item_golem)]
score += [int(item_score)]

ok = True
while len(golem) > 0:
ok = False
for i in range(len(golem)):
if s > golem[i]:
s += score[i]
del golem[i]
del score[i]
ok = True
break
if not ok:
print('NO')
break
if ok:
print('YES')