Массив A [] содержит только '1' и '-1'
Построить массив B, где B [i] - длина самого длинного непрерывного подмассива, начинающегося с j и заканчивающегося на i, где j < i and A[j] + .. + A[i] > 0
Очевидное решение O (n ^ 2) будет:
for (int i = 0; i < A.size(); ++i) {
j = i-1;
sum = A[i];
B[i] = -1; //index which fills criteria not found
while ( j >=0 ) {
sum += A[j];
if (sum > 0)
B[i] = i - j + 1;
--j;
}
}
Я ищу решение O (n).