SvetaX16X
22.06.2021 14:10

Оперативная память компьютера состоит из N ячеек, занумерованных числами от 0 до N-1. В текущий момент времени в памяти находятся M задач, каждая из которых использует свой участок памяти. Участки разных задач не пересекаются. Известны начальные и конечные адреса каждого участка для каждой задачи.

Найдите длину, а также начало и конец самого длинного сплошного участка памяти, свободного в данный момент времени от задач. Если таких участков несколько, то выведите концы участка с самыми большими номерами (самого правого участка).

Формат ввода
В первой строке записано одно целое число N — количество ячеек оперативной (1 ≤ N ≤ 2·109).

Во второй строке записано одно целое число M — количество задач, находящихся в памяти компьютера (0 ≤ M ≤ 15 000).

В каждой из следующих 2·M строк записаны номера начального адреса (в нечетных строках) и номера конечного адреса (в четных строках) участка памяти для каждой задачи. Гарантируется, что начальный адрес не больше конечного.

Формат вывода
В первой строке целое число — длину самого длинного сплошного участка памяти, свободного от данных.

Два целых числа через пробел — начальный и конечный адрес самого длинного сплошного участка памяти, свободного от задач.

Если вся память заполнена, то выведите единственное число 0.

Пример 1
Ввод Вывод
15
4
0
2
5
6
10
10
11
14
3
7 9
Пример 2
Ввод Вывод
13
2
0
0
6
7
5
8 12
Пример 3
Ввод Вывод
5
1
0
4
0
Примечания
В первом примере свободными являются участки [3;4] и [7;9]. Максимальную длину 3 из них имеет [7;9].

Во втором примере свободными являются участки [1;5] и [8;12]. Они имеют одинаковую длину 5. Самый правый из них [8;12].

В третьем примере вся память заполнена.

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
WrestlerTeam
23.07.2020 19:55

var a,b,c,d,res: integer;

begin

write('Введите a: ');

readln(a);

write('Введите b: ');

readln(b);

write('Введите c: ');

readln(c);

write('Введите d: ');

readln(d);

res := a;

// Проверяем число b

if (b mod 10 > res mod 10) then res:=b

else if (b mod 10 = res mod 10) then

 begin

 if (res<b) then res:=b;

 end;

// Проверяем число c

if (c mod 10 > res mod 10) then res:=c

else if (c mod 10 = res mod 10) then

 begin

 if (res<c) then res:=c;

 end;

 

// Проверяем число d

if (d mod 10 > res mod 10) then res:=d

else if (d mod 10 = res mod 10) then

 begin

 if (res<d) then res:=d;

 end;

 

writeln('Число с наибольшей последней цифрой: ',res);

end.

0,0(0 оценок)
Ответ:
turdalievab
23.07.2020 19:55

var a,b,c,d,res: integer;

begin

write('Введите a: ');

readln(a);

write('Введите b: ');

readln(b);

write('Введите c: ');

readln(c);

write('Введите d: ');

readln(d);

res := a;

// Проверяем число b

if (b mod 10 > res mod 10) then res:=b

else if (b mod 10 = res mod 10) then

 begin

 if (res<b) then res:=b;

 end;

// Проверяем число c

if (c mod 10 > res mod 10) then res:=c

else if (c mod 10 = res mod 10) then

 begin

 if (res<c) then res:=c;

 end;

 

// Проверяем число d

if (d mod 10 > res mod 10) then res:=d

else if (d mod 10 = res mod 10) then

 begin

 if (res<d) then res:=d;

 end;

 

writeln('Число с наибольшей последней цифрой: ',res);

end.

0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота