ПОМОГИТЕ С ПРОГРАММИРОВАНИЕМ НА ЯЗЫКЕ ПАСКАЛЬ!!!!!
Время: 1 сек. Память: 16 Мб Сложность: 10%)
Браконьер Петрович использует распространенный незаконный способ рыбалки с использованием рыболовной сети. Но проблема в том, что крупная рыба часто рвет сеть и приходится ее восстанавливать. Однажды Петрович задумался: какое максимальное количество повреждений может быть в рыболовной сети, таких, что сеть не будет разорвана на части? Вам предстоит помочь ему в вычислениях.
Сеть имеет прямоугольную форму размером M×N узлов, все смежные узлы соединены леской. Под разрывом будем понимать только единичный обрыв лески между двумя смежными узлами сети.
Например, если сеть имеет размер 2х2, то внешний вид сети будет напоминать квадрат, где допустим только один разрыв в одном из четырех возможных соединений, т.к. любые 2 разрыва приведут к разделению сети на 2 части.
Входные данные
Первая строка входного файла INPUT.TXT содержит два целых числа M и N через пробел – размеры рыболовной сети (1 ≤ M, N ≤ 10 000).
Выходные данные
В выходной файл OUTPUT.TXT выведите максимальное число разрывов заданной сети, которые не приведут к распадению рыболовной снасти Петровича.
free pascal
{$mode objfpc}{$H+}
uses SysUtils;
var
f: text;
s: string;
M, N: integer;
a: TStringArray;
begin
Assign(f, 'INPUT.TXT');
Reset(f);
Readln(f, s);
Close(f);
a := s.Split(' ');
M := a[0].ToInteger;
N := a[1].ToInteger;
if ((M >= 1) and (M <= 10000)) and ((N >= 1) and (N <= 10000)) then
begin
Assign(f, 'OUTPUT.TXT');
Rewrite(f);
Writeln(f, (M - 1) * (N - 1));
Close(f);
end;
end.
program FishingNet;
var
M, N: longint;
totalNodes, totalEdges, requiredEdges, maxBreaks: int64;
begin
// Чтение входных данных
assign(input, 'INPUT.TXT');
reset(input);
readln(M, N);
close(input);
// Подсчет общего количества узлов и лесок
totalNodes := M * N;
totalEdges := M * (N - 1) + N * (
(M - 1);
// Подсчет минимально необходимого количества ребер для связности
requiredEdges := totalNodes - 1;
// Подсчет максимального количества разрывов
maxBreaks := totalEdges - requiredEdges;
// Запись результата в выходной файл
assign(output, 'OUTPUT.TXT');
rewrite(output);
writeln(maxBreaks);
close(output);
end.