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

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

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

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

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

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

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

Показать ответ
Ответ:
лиза5222
лиза5222
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-бота