Наборы пирожных
На складе кондитерской фабрики хранятся пирожные двух видов — круассаны и эклеры. Круассанов A штук, а эклеров — B штук. Есть неограниченный запас подарочных коробок, в каждую коробку можно положить только три пирожных. При этом требуется, чтобы в коробке были пирожные обоих видов, то есть в одну коробку можно положить два круассана и один эклер или один круассан и два эклера.
Определите, можно ли упаковать все имеющиеся пирожные в коробки и выведите подходящий размещения пирожных по коробкам.
Входные данные
Программа получает на вход два целых числа A и B, записанных в отдельных строках. 1 ≤ A ≤ 109, 1 ≤ B ≤ 109.
Выходные данные
Если можно разложить все пирожные по коробкам в соответствии с условием задачи, программа должна вывести два целых числа. Первое число равно количеству коробок, в которых лежит два круассана и один эклер. Второе число равно количеству коробок, в которых лежит один круассан и два эклера.
Если разложить все пирожные по коробкам нужным нельзя, программа должна вывести одно число −1.
Система оценивания
Решение, правильно работающее только для случаев, когда числа A и B не превосходят 100, будет оцениваться в
N = 15;
var
mas:array[1..15] of integer;
i, max1, max2, min, c, d:integer;
begin
c:=-1;
max1:=-maxint;
min:=maxint;
max2:=-maxint;
randomize;
for i:=1 to N do
mas[i]:=random(101)-50;
write('Массив: ');
for i:=1 to N do
write(mas[i], ' ');
writeln;
for i:=1 to N do
begin
if (mas[i]>0) AND (mas[i]>max1) then
max1:=mas[i];
if (mas[i] mod 2 <> 0) AND (max2<mas[i]) then
begin
c:=i;
max2:=mas[i];
end;
if (mas[i] mod 2 <> 0) AND (min>mas[i]) then
begin
d:=i;
min:=mas[i];
end;
end;
writeln('Максимальный положительный элемент: ',max1);
writeln('Минимальный нечетный элемент: ',min);
writeln('Максимальный нечетный элемент: ',max2);
if c<d then
writeln('Максимальный элемент стоит раньше')
else
writeln('Минимальный элемент стоит раньше');
end.
конкретно в каких стейтментах была ошибка , я не смог разобраться , но фактически у тебя
1.был не правильный вывод (m[1])
2.неправильная итерация по циклу с переменной 'с'
крч легче было просто переделать
var
c, n, i, j: integer;
m: array[1..1000] of integer;
begin
Readln(n);
for i := 1 to n do
begin
m[i] := i;
Write(m[i], ' ');
end;
writeln;
while n >= 1 do
begin
if c+2 < n then c := c + 3 else c := n - c + 3;
for i:=c to n do m[c]:=m[c+1];
n := n - 1;
end;
writeln(m[c]);
end.