Терминалы на вокзалеОценка за задачку: 35 балловНа вокзале установлено N типов
Терминалы на вокзале
Оценка за задачу: 35 баллов
На вокзале установлено N типов терминалов по продаже билетов. Количество терминалов i-го типа одинаково Ci.
Когда пассажир приходит на вокзал чтоб покупать билет, то он избирает свободный терминал с минимальным типом (они новее и воспользоваться ими приятнее). На покупку билета каждый пассажир расходует T секунд, самостоятельно от типа терминала. Если свободных терминалов нет, то пассажир уходит с вокзала. Если терминал освобождается в тот момент, когда пассажир приходит на вокзал, то он может пользоваться этим терминалом.
На вокзале была установлена камера, которая фиксировала время прихода пассажиров момента открытия вокзала. По данным о времени прихода пассажиров определите, сколько билетов было продано для каждого из типов терминалов.
Формат входных данных
В первой строке задано три числа N, K, T - количество типов терминалов, количество пассажиров за денек и время, за которое можно покупать билет (1 N 10, 1 K 100000, 1 T 100000).
Во 2-ой строке задано 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
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 lt;gt; k) do
begin
for j := 1 to n do
begin
for i := 1 to c[j] do
begin
if(ar[j, i] lt;= 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.
-
Вопросы ответы
Статьи
Информатика
Статьи
Математика.
Разные вопросы.
Разные вопросы.
Математика.
Разные вопросы.
Математика.
Физика.
Геометрия.
Разные вопросы.
Обществознание.