Форум программистов, компьютерный форум 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 целых чисел, среди которых нет двух одинаковых. Требуется вычеркнуть минимально... подробнее

Показать сообщение отдельно
ZaMaZaN4iK
Мой лучший друг-отладчик!
 Аватар для ZaMaZaN4iK
163 / 163 / 9
Регистрация: 24.06.2012
Сообщений: 662
Записей в блоге: 5
Завершенные тесты: 1
20.11.2012, 16:26     Интересная задачка(оптимизация)
Вот недавно писал районку по информатике.И там была такая вот задача.Я то её решил, но у меня даже ввод чисел из некоторых тестов не проходит.Прошу вас, как более опытных программистов, помочь мне её оптимизировать.
Вот условие задачи:
Задача E. Конфеты
Ограничение по времени: 2 секунды
Ограничение по памяти: 256 мегабайт Ввод: с клавиатуры
Вывод: на экран
Как известно всем, Питер очень любит сладкое.
Сегодня он купил N упаковок конфет по ai штук в каждой и приступил к их поеданию. Только в этот раз Питер ест их необычным способом.
Он выбирает определённое число m и съедает из каждой коробки (ai –m) конфет. Например, у Питера есть 5 коробок с 3, 2, 8, 9 конфетами. Пит выбрал число 4. Тогда из первой и второй коробки он ничего не съест (в них конфет меньше, чем 4), а из двух последних коробок он съест 4 и 5 конфет. Таким образом, получим, что в пяти коробках будет лежать 3, 2, 4, 4 конфет соответственно.
Питер хочет выбрать такое наибольшее число m, чтобы съесть как минимум K конфет.

Формат ввода:
В первой строке ввода находятся целые числа N и K (1 ≤ N ≤ 10 в 6 степени, 1 ≤ K ≤ 2*(10 в 9 степени)).
В следующей строке записано N целых чисел через пробел: количество конфет в каждой коробке, которое не превышает 10 в 9 степени.

Формат вывода:
Выведите одно число – ответ на задачу.


вот мои наработки, код рабочий, но не очень быстрый:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
 
using namespace std;
 
int main()
{
    long long n,k,max=-1,count=0;
    сin>>n>>k;
    long long *mas=new long long[n];
    for(long long i=0;i<n;i++)
    {
    сin>>mas[i];
    if(mas[i]>max)
    max=mas[i];
    }
    while(max)
    {
       for(long long i=0;i<n;i++)
       {
       if(max<mas[i])
          count+=mas[i] - max;
       if(count>=k)
       goto v1;
       }
       count=0;
       max--;
    }
    v1:
    сout<<max;
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 21:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru