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

Терминалы на вокзале оценка за : 35 на вокзале установлено n типов терминалов по продаже билетов. количество терминалов i-го типа равно ci. когда пассажир приходит на вокзал чтобы купить билет, то он выбирает свободный терминал с наименьшим типом (они новее и пользоваться ими приятнее). на покупку билета каждый пассажир тратит t секунд, независимо от типа терминала. если свободных терминалов нет, то пассажир уходит с вокзала. если терминал освобождается в тот момент, когда пассажир приходит на вокзал, то он может воспользоваться этим терминалом. на вокзале была установлена камера, которая фиксировала время прихода пассажиров момента открытия вокзала. по данным о времени прихода пассажиров определите, сколько билетов было продано для каждого из типов терминалов. формат входных данных в первой строке задано три числа n, k, t - количество типов терминалов, количество пассажиров за день и время, за которое можно купить билет (1 ≤ n ≤ 10, 1 ≤ k ≤ 100000, 1 ≤ t ≤ 100000). во второй строке задано n натуральных чисел c1, cn - количество терминалов каждого из типов (1 ≤ ci ≤ 100000). в третьей строке задано k натуральных чисел a1, ak в порядке неубывания - время прихода пассажиров в секундах (0 ≤ ai ≤ 100000). формат результата выведите n чисел: количество билетов, проданных в каждом типе терминалов. примеры входные данные 3 6 10 1 2 3 0 0 1 2 10 11 результат работы 2 3 1

Показать ответ
Ответ:
Kristia03
Kristia03
08.09.2020 13:47
Var
  n, k, t, i, counter, j: int64;
  c: array[1..10]of int64;
  a: array[1..100000]of int64;
  ar: array[1..10, 1..100000]of int64;
  count: array[1..10]of int64;
  b: boolean;

 label l1;

  begin
  b := true;
  counter := 0;
  read(n, k, t);
  for i := 1 to n do read(c[i]);
  for i := 1 to k do read(a[i]);
  l1:
  while (counter <> k) do
   begin
    for j := 1 to n do
     begin
      for i := 1 to c[j] do
       begin
        if(ar[j, i] <= a[counter + 1]) then
         begin
          ar[j, i] := t + a[counter + 1];
           counter := counter + 1;
          count[j] := count[j] + 1;
          b := false;
          goto l1;
        end;
      end;
    end;
    if(b = true) then counter := counter + 1;
    b := true;
  end;
  for i := 1 to n do write(count[i], ' ');
end.
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота