На рисунке изображён логический диск, разделённый на кластеры. Размер каждого кластера составляет 16 Кбайт. Используемые кластеры — серые, свободные кластеры — белые.
На диск требуется записать файлы: файл А размером 20 Кбайт, затем файл В размером 30 Кбайт, затем файл С размером 65 Кбайт, и наконец — файл D размером 60 Кбайт.
Операционная система для хранения каждого файла пытается искать смежные (соседние) свободные кластеры, чтобы избежать фрагментации файла — рассеивания содержимого файла по диску, приводящего к уменьшению производительности.
В какие кластеры может быть записано содержимое файлов при соблюдении этого условия?
var
count_losers, sum, current_sum, mark, i, j, n: integer;
begin
read(n);
count_losers := 0;
for i := 1 to n do
begin
current_sum := 0;
for j := 1 to 4 do
begin
read(mark);
current_sum := current_sum + mark;
end;
if current_sum < 10 then
inc(count_losers);
sum := sum + current_sum;
end;
writeln('Неуспевающих учеников: ', count_losers);
writeln('Средняя сумма четырёх отметок: ', sum / n);
writeln('Средняя отметка: ', sum / 4 / n);
end.
Пример ввода:
4
2 2 2 5
2 2 5 2
2 5 2 2
3 2 2 2
Пример вывода:
Неуспевающих учеников: 1
Средняя сумма четырёх отметок: 10.5
Средняя отметка: 2.625
Алгоритм для решения задачи выберем простой: записываем все предыдущие числа в массив и для каждого следующего числа проходим по массиву.
var
a: array[1..19] of byte;
i, j, t: byte;
begin
for i := 1 to 20 do
begin
read(t);
if i < 20 then a[i] := t;
for j := 1 to i - 1 do
if a[j] = t then
t := 0;
if t > 0 then write(t, ' ');
end;
end.
Пример ввода:
1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10
Пример вывода:
1 2 3 4 5 6 7 8 9 10