Форум » Массивы, сортировка, работа с файлами » вопрос по решению задачи 26 ЕГЭ » Ответить

вопрос по решению задачи 26 ЕГЭ

izmka: в примере задания P-00(Демо-2021) темы "задача 26" правильный ответ 2 50, но когда я начинаю решать этот же пример программой, представленной в документе, то получаю ответ 2 80 текст программы: #include <iostream> #include <fstream> #include <vector> #include <algorithm>. using namespace std; int main() { ifstream Fin("26.txt"); int S, N, x; Fin >> S >> N; vector <int> data(N); for( int i = 0; i < N; i++ ) Fin >> data; sort( data.begin(), data.end() ); int total = 0, count; for( count = 0; count < N; count++ ) { if( total + data[count] > S ) break; total += data[count]; } int delta = S - total; int maxCandidate = 0; for( int i = count; i < N; i++ ) { if( data - data[count] <= delta ) if( data > maxCandidate ) maxCandidate = data; } cout << count << " " << maxCandidate; } получается так, что когда мы доходим до for( int i = count; i < N; i++ ) { if( data - data[count] <= delta ) if( data > maxCandidate ) maxCandidate = data; } то из-за <= перед delta получаем: 80-50 <= 30 - да в таком случае ответ 2 80, чего, вроде бы, не может быть но если мы меняем <= на < , то ответ получается правильный - 50 отсюда вопрос: при решении таких заданий все-таки правильно писать <= или <?

Ответов - 1

Поляков: Программа на C++, приведенная в файле, выдает правильный ответ 568 50.



полная версия страницы