Задача в неделю. Олимпиадные задачи по информатике. Разбор задания 4-го занятия
Центр информатизации образования ИРО ХМАО-Югры
Югорский государственный университет
Югорский НИИ информационных технологий
Телекоммуникационный проект "Задача в
неделю"
Разбор занятия № 4
Задача взята из книги И.Н. Порублева
и А.Б. Ставровского <Алгоритмы и программы. Решение олимпиадных задач>.
Заведем массив из 10001 элемента, которые
вначале приравняем нулю. В случае (а) при чтении чисел последовательности
элементы массива с соответствующим номером приравниваем единице. Так как числа
в последовательности не превышают 10000, то хотя бы один элемент массива
останется нулевым. Его номер и будет ответом. В случае (б) также читаем числа
последовательности. Если они больше 10001, то их пропускаем, в противном случае
элемент массива присваиваем 1. Так как элементов не больше 10000, то хотя бы
один из элементов массива останется нулевым. Найдем нулевой элемент с
наименьшим номеров.
var
k, x : integer;
y :longint;
a :array [1..10001] of integer;
begin
assign(input,'input.txt');
reset(input);
assign(output,'output.txt');
rewrite(output);
for k:=1 to 10001 do
a[k]:=0;
readln(k);
if k=1 then
begin
while not eoln do
begin read(x); a[x]:=1 end
end else
begin
while not eoln do
begin read(y); if y<=10001 then a[y]:=1 end
end;
k:=1;
while a[k]=1 do
k:=k+1;
write(k)
end.
Работы тестировались на 20 тестах (по 1 баллу за
тест). Эти тесты можно взять в материалах занятия.