alarm
Задайте вопрос
Информатика
Mark Barnes

Пишет, что программа использует слишком много памяти, посчитайте Сумма, делящаяся на триНеобходимо найти самый большой непрерывный фрагмент в массиве a1,a2. . . aN, сумма элементов которого делится на 3. Входные данныеВ первой строке входных данных содержится число N≤100000. Во второй строке даны N чисел, по модулю не превосходящих 109, — элементы массива. Выходные данныеВыведите два числа — индексы начала и конца фрагмента. Если таких фрагментов неКак узнать сколько, то выведите фрагмент с минимальным индексом начала. Если ответа не существует, то выведите единственное число −1. ПримерыВвод5Вывод1 2 3 4 51 5Ввод41 2 3 4Вывод1 3#include #include using namespace std;int main () {int n;cin >> n;vector a(n),s(3, -1), e(3, -1);for (int i = 0; i < n; i++)cin >> a[i];int mmax = -1;int maxlen = 0;int m = 0;int p = 0;for (int i = 0; i < n; i++) {if (s[m] < 0)s[m] = i;p += a[i] % 3;m = p % 3;if (s[m] >= 0) {e[m] = i;if (e[m] - s[m] + 1 > maxlen) {maxlen = e[m] - s[m] + 1;mmax = m;}}}if (mmax >= 0)cout << s[mmax] + 1 << " " << e[mmax] + 1;else cout << mmax;}

ответы: 1
Зарегистрируйтесь, чтобы добавить ответ
Чтобы ответить необходимо зарегистрироваться.

Другие вопросы: - Информатика

Выбери верные рекомендации по оф

Новый маршрут для трекингаСейчас

Сумма чисел в массивеВ одномерно

На берегу горной реки оказались

посчитайте с задачей, язык Pytho

на С++ Сумма подряд идущих Дан

Контакты
Реклама на сайте