Студент Валера являет собой классический пример лентяя. На занятия он практически не ходит, и только в конце семестра появляется в университете и сдает ”хвосты”. Его заветная мечта: найти такой день, когда можно будет сдать сразу все долги. У него есть расписание работы преподавателей, из которого точно известно, с какого и по какой день месяца каждый преподаватель ежедневно будет доступен Валере написать программу, которая по расписанию будет определять, сможет ли Валера сдать все долги за один день или нет.
Входные данные
В первой строке входного файла INPUT.TXT содержится натуральное число N – количество предметов, которые нужно сдать Валере (N ≤ 100). Далее идет N строк, каждая из которых состоит из двух чисел A и B, задающих отрезок работы очередного преподавателя (1 ≤ A ≤ B ≤ 31).
Выходные данные
В выходной файл OUTPUT.TXT выведите «YES», если возможно встретить всех преподавателей за один день, или «NO», если это сделать невозможно.
Примеры
№ INPUT.TXT OUTPUT.TXT
1 1
1 2 YES
2 2
1 2
3 4 NO
3 3
1 8
3 5
4 9 YES
Нужно написать программу на паскале и к ней блок-схему с проверкой
Нужно очень и зарание
Итак, чтобы решить эту задачу, нам нужно определить, сможет ли Валера сдать все долги за один день или нет, и вывести соответствующий ответ "YES" или "NO".
Перед тем как приступить к написанию программы на паскале, давайте разберемся, как мы будем решать эту задачу.
У нас есть расписание работы преподавателей, которое представлено во входных данных. Каждая строка представляет собой отрезок работы одного преподавателя. Отрезок представлен двумя числами A и B, где A - это день начала работы преподавателя, а B - день окончания работы преподавателя.
Нам нужно проверить, есть ли на каждый день в месяце какой-либо преподаватель, чтобы Валера смог сдать все долговые задания. Если найдется хотя бы один день, когда ни один из преподавателей не работает, то Валера не сможет сдать все долги за один день.
Итак, теперь мы готовы перейти к написанию программы на паскале.
```pascal
program calculateDebts;
var
N, A, B, day, i: integer;
schedule: array [1..31] of boolean;
canPassAllDebts: boolean;
begin
// Ввод данных
assign(input, 'input.txt');
reset(input);
assign(output, 'output.txt');
rewrite(output);
// Чтение количества предметов, которые нужно сдать Валере
readln(N);
// Инициализация массива расписания
for day := 1 to 31 do
schedule[day] := false;
// Чтение расписания работы преподавателей
for i := 1 to N do
begin
readln(A, B);
for day := A to B do
schedule[day] := true;
end;
// Проверка возможности сдать все долги за один день
canPassAllDebts := true;
for day := 1 to 31 do
begin
if not schedule[day] then
begin
canPassAllDebts := false;
break;
end;
end;
// Вывод результата
if canPassAllDebts then
writeln('YES')
else
writeln('NO');
close(input);
close(output);
end.
```
Теперь давайте рассмотрим блок-схему программы.
Блок-схема программы:
```
┌──────────────────┐
│ Ввод данных │
└──────────────────┘
│
▼
┌──────────────────┐
│ Инициализация │
│ массива │
│ расписания │
└──────────────────┘
│
│
│
▼
┌──────────────────┐
│ Чтение данных │
│ расписания │
└──────────────────┘
│
▼
┌──────────────────┐
│ Проверка возмо- │
│ стности сдать все│
│долги за один день│
└──────────────────┘
│
│
▼
┌──────────────────┐
│ Вывод результата│
└──────────────────┘
│
▼
┌──────────────────┐
│ Закрытие файлов│
└──────────────────┘
```
Надеюсь, что эта подробная и обстоятельная информация поможет тебе понять, как решить эту задачу. Если у тебя возникнут еще вопросы, не стесняйся задавать их. Удачи в решении задачи!