Eating A Cream In Front Of The Door

Đề bài

Trong thời gian thất nghiệp trước khi đi làm IT, An đã tậu một xe kem, thử buôn bán một phen.

Khi anh đỗ xe trước cổng trường cấp 2 liền có 1 loạt các em đến đứng xếp hàng mua. Trong tay các em là các tờ tiền có mệnh giá 25 đồng, 50 đồng, 100 đồng. Giá một que kem là 25 đồng. Trong tay An hiện không có đồng nào. Hỏi An có thể bán kem và trả tiền thừa đúng cho từng người và đúng thứ tự đã xếp hàng được không ?

Input
Dòng đầu tiên là n (1 ≤ n ≤ 10^5) — số lượng các em trong hàng. Dòng tiếp theo là n số nguyên, mỗi 25, 50 or 100 — mệnh giá các tờ tiền. Các số sắp theo thứ tự từ đầu hàng đến cuối hàng.

Output
In ra “YES” (không có dấu ngoặc kép) nếu An có thể bán kem và trả tiền thừa đúng cho từng người và đúng thứ tự đã xếp hàng, không thì in ra “NO”.

Resource limits
Execution time: 2 seconds

Memory: 256.00 MB

Đáp án

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
import sys

input_str = ""

count_line = 0
for line in sys.stdin:
count_line += 1
if count_line == 2:
arr = line.split()

n_25 = 0
n_50 = 0
n_100 = 0
for item in arr:
if item == '25':
n_25 += 1
elif item == '50':
if n_25 > 0:
n_25 -= 1
n_50 += 1
else:
print('NO')
exit()
else:
if n_50 > 0 and n_25 > 0:
n_25 -= 1
n_50 -= 1
elif n_25 >= 3:
n_25 -= 3
else:
print('NO')
exit()
print('YES')