Если Вы любитель суши, тогда наверняка вам знакома ситуация, когда использованные приборы выбросить жалко, а применить некуда… У Саши возникла идея по применению китайских палочек! Она решила преобразить интерьер и навести порядок с ювелирными украшениями, соорудив подставку под них. Для начала нужно было соединить три палочки в треугольник так, чтобы они были сторонами этого треугольника, а концы палочек должны быть вершинами треугольника. Три палочки для суши, которые были у Саши, имели длину k, l и m китайских дюймов. Саша знает, что не всегда из трёх палочек получится сложить треугольник, а ломать их она не хочет. К счастью, имеющиеся палочки были сделаны из очень свежего бамбука, а это значит, что если на палочку капнуть 1 каплю соевого соуса, то она станет длиннее на 1 китайский дюйм. Таким образом, с одной капли соевого соуса Саша может увеличить длину любой из палочек на один китайский дюйм. Сколько капель соевого соуса придётся израсходовать Саше, чтобы она смогла дорастить палочки до нужной длины и собрать из них треугольник? Входные данные В единственной строке даны три целых числа k, l и m (1≤k, l, m≤100) – длины палочек, которые есть у Саши. Выходные данные Выведите одно целое число – минимальное количество капель соевого соуса, которые Саше сделать треугольник из своих палочек. Входные данные :
3 4 5
2 5 3
100 10 10
выходные данные :
0
1
81
решить задачу
Внимание! Если программа не работает, обновите версию!
procedure FillStack(st:Stack<integer>; sq:sequence of integer);
begin
foreach var t in sq do st.Push(t);
end;
procedure PrintStack(st:Stack<integer>; s:string);
begin
Write(s); st.Println
end;
procedure ToStack(sta,stb:Stack<integer>; Even:boolean);
begin
if Even then
while sta.Count>0 do begin
var v:=sta.Pop;
if v.IsEven then begin
stb.Push(v);
exit
end
end
else
while sta.Count>0 do begin
var v:=sta.Pop;
if v.IsOdd then begin
stb.Push(v);
exit
end
end
end;
begin
var st1:=new Stack<integer>;
FillStack(st1,Seq(2,13,20,18,1));
PrintStack(st1,'Стек1: ');
var st2:=new Stack<integer>;
FillStack(st2,Seq(9,11,10,8,4));
PrintStack(st2,'Стек2: ');
var st3:=new Stack<integer>;
while st1.Count+st2.Count>0 do begin
ToStack(st1,st3,True);
ToStack(st2,st3,False);
end;
PrintStack(st3,'Стек3: ')
end.
Результат
Стек1: 1 18 20 13 2
Стек2: 4 8 10 11 9
Стек3: 2 9 20 11 18