В
Все
М
Математика
А
Английский язык
Х
Химия
Э
Экономика
П
Право
И
Информатика
У
Українська мова
Қ
Қазақ тiлi
О
ОБЖ
Н
Немецкий язык
Б
Беларуская мова
У
Українська література
М
Музыка
П
Психология
А
Алгебра
Л
Литература
Б
Биология
М
МХК
О
Окружающий мир
О
Обществознание
И
История
Г
Геометрия
Ф
Французский язык
Ф
Физика
Д
Другие предметы
Р
Русский язык
Г
География
Alinazonova
Alinazonova
02.08.2022 08:56 •  Информатика

Надо

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

Показать ответ
Ответ:
chesht
chesht
24.01.2020 17:23
1. Вариант современного решения на современной версии языка Паскаль

// PascalABC.NET 3.3, сборка 1555 от 21.10.2017
// Внимание! Если программа не работает, обновите версию!

begin
  var a:array[,] of integer:=(
      ( 2, 1,-1, 4),
      (-3, 1,-4, 1),
      ( 2, 1, 2, 3),
      ( 2, 2, 5, 4),
      (-3,-1,-3, 1));
  Writeln('*** Исходная матрица ***');
  a.Println(3); Writeln(3*a.ColCount*'-');
  var s:=a.Col(2).Where(x->Abs(x)<=3);
  Writeln('Элементов ',s.Count,', их сумма равна ',s.Sum)
end.

Результат
*** Исходная матрица ***
  2  1 -1  4
 -3  1 -4  1
  2  1  2  3
  2  2  5  4
 -3 -1 -3  1

Элементов 3, их сумма равна -2

2. Вариант решения "Так писали наши дедушки и так нас учат в школе"

const
  m=5;
  n=4;
  a:array[1..m,1..n] of integer=(
      ( 2, 1,-1, 4),
      (-3, 1,-4, 1),
      ( 2, 1, 2, 3),
      ( 2, 2, 5, 4),
      (-3,-1,-3, 1));

procedure SumCol(m,k:integer; var p,s:integer);
  var
    i:integer;
  begin
    s:=0; p:=0;
    for i:=1 to m do
      if Abs(a[i,k])<=3 then begin
        s:=s+a[i,k];
        p:=p+1
        end
  end;

var
  i,j,kol,sum:integer;
 
begin
  Writeln('*** Исходная матрица ***');
  for i:=1 to m do begin
    for j:=1 to n do Write(a[i,j]:3);
    Writeln
    end;
  for i:=1 to n do Write('---');
  Writeln;
  SumCol(m,3,kol,sum);
  Writeln('Элементов ',kol,', их сумма равна ',sum)
end.

Результат
*** Исходная матрица ***
  2  1 -1  4
 -3  1 -4  1
  2  1  2  3
  2  2  5  4
 -3 -1 -3  1

Элементов 3, их сумма равна -2
0,0(0 оценок)
Ответ:
emashewamarina
emashewamarina
18.02.2020 14:38
begin   s1:=copy(s,1,pos(' ',s)-1);{копируем первое слово до пробела}   for i:=pos(' ',s)+1 to length(s) do{смотрим строку дальше}   if (copy(s,i,length(s1))=s1){если набор символов совпадает с этим словом}      and(s[i-1]=' '){и перед ним пробел}      and((s[i+length(s1)]=' '){и за ним пробел}      or(i+length(s1)-1=length(s))) then{или это последнее слово}       begin        k:=1;{фиксируем совпадение}        s2:=s1;{запоминаем слово}        write('Одинаковые слова ',s2);{выводим на экран}        readln;        exit;{выходим из программы, нужно только 1 пару}       end;   delete(s,1,pos(' ',s));{удаляем первое слово, следующее первое}  end; if k=0 then write('Нет двух одинаковых слов'); readln end.
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота