Форум программистов, компьютерный форум CyberForum.ru

Интересная задачка(оптимизация) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Создать базовый класс - Array и производный класс - Money для работы денежной суммы http://www.cyberforum.ru/cpp-beginners/thread703252.html
ПОМОГИТЕ, ПОЖАЛУЙСТА, С ЗАДАЧЕЙ Создать базовый класс - Array и производный класс - Money для работы денежной суммы
C++ Найти слово, символы в котором идут в строгом порядке возрастания их кодов Ввести n слов с консоли. Найти слово, символы в котором идут в строгом порядке возрастания их кодов. Если таких слов несколько, найти первое из них. http://www.cyberforum.ru/cpp-beginners/thread703242.html
перестановки с повторениями! C++
Помогите! есть прога все считает правильно только не выводит значения с повторениями! помогите исправить! // mat_kkursa.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <iterator> #include <iostream>
Как определить, что все элементы массива отрицательные? C++
//вывод массива в строчке, элементы через пробелы// min = arr; for (i = 0; i < n; i++) if (arr < min) min = arr; for (i1=0; i1<n; i1++) if (arr>0)
C++ цикл case. Подсчет каллорий http://www.cyberforum.ru/cpp-beginners/thread703203.html
Здравствуйте!! Я чего то не пойму...почему неправильно мне сумму выводит??? #include <iostream> using namespace std; int main() {
C++ надо написать на языке с 4. Заданы два массива А(5) и В(5). Подсчитать в них количество элементов, меньших значения t, и первым на печать вывести массив, имеющий наибольшее их количество. 30. Определить в одномерном числовом массиве A из n элементов число соседств из двух чисел одного знака. 56. Дана последовательность из N целых чисел, среди которых нет двух одинаковых. Требуется вычеркнуть минимально... подробнее

Показать сообщение отдельно
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
20.11.2012, 17:29     Интересная задачка(оптимизация)
Если max уменьшать на 1, то будет очень долго. Здесь нужен двоичный поиск. Изначально левая граница l=0, правая граница r=max. Нужно найти такое x, при котором count>=k и при (x+1) count<k.
Выбираете x=(l+r)/2. Проверяете что получится при x и при x+1 (это делаете в одном цикле). Если оба значения меньше k, то делаете r=x. Если оба значения count>k, то l=x.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru