Бизнесмен Василий готовится к уплате налогов за квартал (три месяца). Действующая налоговая система в государстве, в котором Василий ведет свой бизнес, устроена таким образом, что величина налога зависит от прибыли в конце каждого месяца. Чистая прибыль бизнесмена определяется как разница между доходом и расходом. Разумеется, если бизнес идет не очень удачно, прибыль бизнесмена может быть отрицательной —в этом случае речь идет об убытке. Все доходы и расходы Василий записывал в журнал в виде целых чисел. Теперь Василий должен подать налоговую декларацию с суммой доходов на конец каждого месяца, другими словами ему необходимо поделить последовательность записей в журнале на три непустые части.
При этом Василий хочет сделать это таким образом, чтобы прибыль в каждой части была одинаковой (возможно даже отрицательной) — в этом случае сумма налога будет минимальной. Менять порядок записей в журнале нельзя.
По имеющимся данным определите количество выполнить такое разбиение.
Входные данные
В первой строке входных данных содержится единственное целое число N — количество записей в журнале Василия (3 ≤ N ≤ 105).
В следующих N строках записаны целые числа ai, соответствующие записям в журнале (−108 ≤ ai ≤ 108).
Выходные данные
Программа должна вывести единственное целое число — количество выполнить необходимое разбиение.
var
c, a: array[1..20] of integer;
i: integer;
begin
write('Первый массив ');
for i := 1 to 20 do begin
c[i] := i * (-5);
write(c[i], ' ');
end;
writeln;
write('Преобразованный массив ');
for i := 1 to 20 do begin
a[i] := c[20 - i + 1];
write(a[i], ' ');
end;
end.
ИЛИ Программа не использующая два массива, а просто переворачивающая первый
var
c: array[1..20] of integer;
i: integer;
begin write('Первый массив ');
for i := 1 to 20 do begin
c[i] := i * (-5);
write(c[i], ' ');
end;
writeln;
write('Преобразованный массив ');
for i := 20 downto 1 do write(c[i], ' ');
end.
Обе программы работают!
uses crt;
Var a,b,c:integer;
Begin
Write('Введите 1-ю сторону: '); Readln(a);
Write('Введите 2-ю сторону: '); Readln(b);
Write('Введите 3-ю сторону: '); Readln(c);
{Проверка на существование треугольника}
if ((a+b)>c) and ((a+c)>b) and ((b+c)>a) then
Begin
if ((a=b)or (b=c) or (a=c)) then
Writeln('Треугольник равнобедренный');
if ((a=b) and (b=c)) then
Writeln('Треугольник равносторонний')
else Writeln('Треугольник разносторонний');
if ((a*a+b*b = c*c) or (a*a+c*c = b*b) or (b*b+c*c = a*a)) then
Writeln('Треугольник прямоугольный');
end
else Writeln('Треугольник нельзя построить');
Readln();
END.