Билеты на поезд
Даниил организует поездку школьников на олимпиаду по программированию. Поезд, на котором планируется добраться до места проведения олимпиады, уже выбран; осталось лишь купить билеты. На данный момент свободные места остались в n купе, притом в i-м из этих купе свободно ровно ai мест.
Чтобы школьникам было нескучно, им была предоставлена возможность объединиться в пары или тройки, которые будут ехать в одном купе. Всего k2 пар и k3 троек школьников изъявили желание путешествовать в одном купе. Оставшиеся k1 школьников не высказали никаких предпочтений. Все эти школьники различны, то есть всего на олимпиаду поедет k1 + 2×k2 + 3×k3 школьников.
Определите, возможно ли купить билеты так, чтобы все пожелания были удовлетворены. Даниил уже купил себе билет, то есть его брать в расчет не нужно.
Формат входных данных
Первая строка содержит одно целое число t (1 ≤ t ≤ 100) — количество тестов. Далее следует описание t тестов. Каждый из тестов описывается тремя строками.
Первая строка описания теста содержит одно целое число n (1 ≤ n ≤ 105) — количество оставшихся купе.
Вторая строка описания теста содержит n целых чисел a1, a2, …, an (1 ≤ ai ≤ 4) — количества свободных мест в оставшихся купе.
Третья строка описания теста содержит три целых числа k1, k2 и k3 (0 ≤ ki ≤ 4×105) — количество школьников, которые не высказали никаких предпочтений, а также количество пар школьников и количество троек школьников, желающих быть в одном купе, соответственно.
Гарантируется, что сумма всех n не превосходит 105.
Формат результата
Выведите t строк, i-я из которых содержит «YES», если в i-м тесте возможно купить билеты, удовлетворив все пожелания, и «NO» в противном случае.
Ответы
Ответ:
print("кол-во купе")
n = int(input()) #купе
a = [] #места
print ("кол-во одиночек")
one = int(input())
print ("кол-во двоек")
two = int(input())
print ("кол-во троек")
three = int(input())
for i in range(n):
k=0
print ("Кол-во мест в",i+1," купе:")
while k<1 or k>4:
k=int(input())
if(k<1 or k>4):
print("Число мест от 1 до 4!!!")
a.append(k)
l = 0
for i in range(len(a)):
if a[i]>=3:
l = l+1
a[i] = a[i]-3
if l == three:
break
print(l,"тройки")
print(a)
j = 0
for i in range(len(a)):
if a[i]>=2:
j = j+1
a[i] = a[i]-2
if j == two:
break
print(j,"двойки")
print(a)
m = 0
for i in range(len(a)):
if a[i]>=1:
m = m+1
a[i] = a[i] - 1
if m == one:
break
print(m,"одиночки")
print(a)
if l>=three and j>=two and m>=one:
print("YES")
else:
print("NO")
Объяснение:
надеюсь в коде разберешься )
написано в питоне