Информатика, вопрос задал cherry4466 , 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» в противном случае.

Примеры
Входные данные
2
2
3 4
1 1 1
2
3 4
1 2 1
Результат работы
YES
NO
Входные данные
3
1
2
0 1 0
5
4 3 1 4 1
2 4 1
4
1 4 3 2
0 0 3
Результат работы
YES
YES
NO
Примечания
В первом тесте первого примера школьника-одиночку и пару школьников можно посадить во второе купе, а тройку — в первое. Во втором тесте первого примера купить билеты, удовлетворив все пожелания, не выйдет, потому что всего осталось 3 + 4 = 7 билетов, а школьников 1 × 1 + 2 × 2 + 1 × 3 = 8.​

Ответы на вопрос

Ответил antonstuden
0

Ответ:

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

Объяснение:

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

Новые вопросы