В
Все
М
Математика
А
Английский язык
Х
Химия
Э
Экономика
П
Право
И
Информатика
У
Українська мова
Қ
Қазақ тiлi
О
ОБЖ
Н
Немецкий язык
Б
Беларуская мова
У
Українська література
М
Музыка
П
Психология
А
Алгебра
Л
Литература
Б
Биология
М
МХК
О
Окружающий мир
О
Обществознание
И
История
Г
Геометрия
Ф
Французский язык
Ф
Физика
Д
Другие предметы
Р
Русский язык
Г
География
ЗНАНИЯ88
ЗНАНИЯ88
06.12.2020 07:14 •  Информатика

Есть массив a состоящий из n целых чисел. Есть ли в массиве два различных индекса i и j такие, что ai + aj равна сумме всех остальных чисел массива?
Формат входных данных
В первой строке находится одно целое число n(3 6 n 6 105

) — размер массива.

Во второй строке находятся n целых чисел a1, a2, ..., an(1 6 ai 6 109

) — числа массива.

Формат выходных данных

Если есть два элемента массива, что их сумма равна сумме всех остальных элементов, то выве-
дите «YES». Иначе, выведите «NO».

Показать ответ
Ответ:
санеке
санеке
07.03.2022 06:00

#include <iostream>

#include <vector>

#include <algorithm>

using namespace std;

void solve(){

   int n, sum = 0;

   bool ok = false;

   cin >> n;

   vector<int> a(n);

   for(auto &i: a) { cin >> i; sum += i;}

   sort(a.begin(), a.end());

   for(int i = 0; i < n; i++){

       int l = i + 1, r = n - 1;

       while(l <= r && !ok){

           int m = (l + r) / 2;

           if(a[m] < sum - a[i])

               l = m + 1;

           else if(a[m] > sum - a[i])

               r = m - 1;

           else

               ok = true;

       }

   }

   cout << (ok ? "YES" : "NO");

}

int main(){

   solve();

}

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота