• Предмет: Информатика
  • Автор: andreykulikov2
  • Вопрос задан 1 год назад

Билеты на поезд
Даниил организует поездку школьников на олимпиаду по программированию. Поезд, на котором планируется добраться до места проведения олимпиады, уже выбран; осталось лишь купить билеты. На данный момент свободные места остались в 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» в противном случае.

Ответы

Ответ дал: antonstuden
1

Ответ:

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")

Объяснение:

надеюсь в коде разберешься )

написано в питоне

Вас заинтересует