Можно быстро сообразить, какой будет ответ, при кругов Эйлера.
Всего есть 2^6 = 64 возможных комбинаций входных параметров и, соответственно, в таблице 64 строки. Изобразим области истинности выражений A и B. Область истинности выражения A + -B – это объединение области истинности A и области ложности выражения B; область истинности изображена на рисунке зелёным цветом.
Чтобы в закрашенную область попало как можно больше элементов, в незакрашенной области элементов должно быть как можно меньше. В данном случае ничего не мешает тому, чтобы в незакрашенной области вообще не было элементов, при этом все 5 элементов в области истинности B должны одновременно быть и в области истинности A. При этом в область истинности выражения A + -B входят все 64 элемента, максимально возможное число единиц равно 64.
Так как изначально в задании указано : "на любом известном вам языке программирования" - вот, держи на С.
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#define N 100
int main()
{
setlocale(LC_ALL, "Rus");
int i, M;
float B[N], MIN;
printf(" Введите количество элементов массива (не больше 100) => ");
scanf("%d", &M);
if (M < 100)
{
for (i = 0; i < M; i++)
{
printf("Введите [%d] элемент массива =>", i);
scanf("%f", &B[i]);
}
for (i = 0; i < M; i++)
printf("%1.0f ", B[i]);
MIN=B[0];
for (int i=1; i<M; i++)
{
if (B[i]<MIN)
MIN=B[i];
}
printf ("\n\tМинимальное значение в массиве => %7.2f", MIN);
}
else
printf("Ошибка. Заданное число элементов массива слишком большое.");
return 0;
}