Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите решить задачу (написать программу) на языке ПАСКАЛЬ

Makar Знаток (256), на голосовании 2 месяца назад
1. Качели. Трое друзей Аня, Боря и Саша пришли на детскую площадку, чтобы покачаться на качелях‑балансире. Качели представляют собой длинную балку, закреплённую в центре, на которую дети садятся с разных концов.

Массы детей равны A, B и C кг. Чтобы держать баланс на качелях, разница масс на двух концах качелей должна быть не более D кг. Друзьям повезло: рядом с площадкой оказалась груда достаточно тяжёлых камней. Один из детей может взять с собой любой камень, чтобы сделать разность масс на концах качелей допустимой. Помогите друзьям определить минимальную массу камня, благодаря которому они смогут покачаться на качелях.

Формат входных данных
Программа получает на вход три числа A, B, C, записанных в отдельных строках, массы друзей. В четвёртой строке записано число D наибольшая допустимая разница масс на концах качелей. Все числа целые, положительные и не превосходящие 109.

Формат выходных данных
Программа должна вывести одно целое число минимально необходимую массу камня, которую нужно добавить на одну из сторон качелей, чтобы друзья смогли покачаться на них, сев оптимально. Если камень им не понадобится, программа должна вывести число 0.

Система оценки
Решения, правильно работающие, когда все входные числа не превосходят 105, будут оцениваться в 40 баллов.

Замечание
В первом примере Аня и Саша сядут на одну сторону, их суммарная масса будет равна 65 кг. На другую сторону сядет Боря, взяв 15-килограммовый камень, тогда масса Бори с камнем составит 55 кг. Разница весов на концах качелей примет значение 10 кг.
Во втором примере Аня и Боря сядут на одну сторону (50 кг), Саша на другую сторону (45 кг). Разница весов будет равна 5 кг, поэтому камень не понадобится.
Ввод
30
40
35
10
Вывод
15
Ввод
30
20
45
10
Вывод
0
Голосование за лучший ответ
kot Знаток (281) 3 месяца назад
Я не знаю паскаль, сори
ауцыв уафсыв Мыслитель (5412) 3 месяца назад
 program SeesawBalance; 
var
A, B, C, D: Int64;
minimal_s, s_min, s_max, delta0: Int64;
M1, M2: Int64;
i, j: Integer;
kids: array[1..3] of Int64;
sides: array[1..3] of Integer;
partitions: array[1..6, 1..3] of Integer = (
(1, 2, 2),
(1, 2, 1),
(1, 1, 2),
(2, 1, 2),
(2, 1, 1),
(2, 2, 1)
);
begin
ReadLn(A);
ReadLn(B);
ReadLn(C);
ReadLn(D);
kids[1] := A;
kids[2] := B;
kids[3] := C;
minimal_s := High(Int64);
for i := 1 to 6 do
begin
M1 := 0;
M2 := 0;
for j := 1 to 3 do
begin
if partitions[i, j] = 1 then
M1 := M1 + kids[j]
else
M2 := M2 + kids[j];
end;
delta0 := M1 - M2;
for j := 1 to 3 do
begin
if partitions[i, j] = 1 then
begin
s_min := delta0 * (-1) - D;
if s_min < 0 then s_min := 0;
s_max := delta0 * (-1) + D;
end
else
begin
s_min := delta0 - D;
if s_min < 0 then s_min := 0;
s_max := delta0 + D;
end;
if s_min <= s_max then
if s_min < minimal_s then
minimal_s := s_min;
end;
end;
if minimal_s = High(Int64) then
minimal_s := 0;
WriteLn(minimal_s);
end.
MakarЗнаток (256) 3 месяца назад
Спасибо !!!
Jurijus ZaksasИскусственный Интеллект (456697) 3 месяца назад
Вот ведь бредогенератор-то какой... Код в десяток строк записать таким поганым образом - это только ИИ может.
Похожие вопросы