Мое предложение - в массиве 20 на 20 храниться структура struct cell { int rabbit; // кол-во зайцев int* wolfs; // очки волков int* she_wolfs;// очки волчиц } очки предлагаю хранить умноженными на 10 во избежания проблем вещественным сравнением. Но есть одна проблема с задачей в целом. Это порядок ходов. Если в двух соседних клетках находятся заяц и волк, и первый ходит заяц, то волк может остаться голодным. Если же первый ходит волк - он то зайца может скушать. Поэтому, я предлагаю, что вначале ходят все зайцы, потом все волки - по очереди.
Логика такая. Первое дерево известной высоты, следущее дерево на 1 метр ниже или выше, следущее дерево на 1 метр ниже или выше и тд.
Т.е. так любую конфигурацию можно зашифровать двоичным числом длиною в 9 цифр (1-выше, 0-ниже). Таких различных чисел может быть 2^9 вариантов.
Var a,b,i,kratnoe,n,s:int64;
begin
read (a,b,kratnoe);
s:=0;
for i:=a to b do
if (i mod kratnoe=0) then s:=s+i;
write(s);
end.