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

Определить массу и количество тыкв, которые будут вывезены первым рейсом - C++

Восстановить пароль Регистрация
 
Narkok
0 / 0 / 0
Регистрация: 21.10.2014
Сообщений: 12
15.09.2015, 17:59     Определить массу и количество тыкв, которые будут вывезены первым рейсом #1
Прежде чем начать вывозить с поля урожай тыкв хозяин решил сформировать такую ​​стратегию загрузки трактора, чтобы первым рейсом вывезти как можно большую массу овощей. При этом он выбирает из двух простых вариантов:
1.послидовно нагружать от легкого до тяжелого тыквы;
2.послидовно нагружать от тяжелого до легкого тыквы.
Если же эти две стратегии дают одинаковую массу, то желательно, чтобы количество тыкв была как можно больше. Конечно, хозяин не намерен перегружать трактор, поэтому учитывает его допустимую нагрузку. Составьте программу, чтобы с известным количеством тыкв, их массами и допустимой нагрузкой трактора определить массу и количество тыкв, которые будут вывезены первым рейсом.

Входные данные:
Из стандартного входного потока в отдельных строках вводятся натуральные числа: P - допустимая нагрузка трактора (0 <P <2000); N - количество тыкв (0 <N <500) N целых чисел mi - массы каждого из тыкв (0 <mi <100).

Исходные данные:
В стандартный выходной поток вывести два целых числа, разделенных пробелом - массу и количество тыкв, которые будут вывезены первым рейсом.

Просьба решить на с++ . Заранее спасибо !!!

П.с.: тесты
100 10
40 10 40 20 30 20 30 10 10 40 / 100 6
200 8
10 100 20 20 50 60 10 90 / 190 2
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.09.2015, 17:59     Определить массу и количество тыкв, которые будут вывезены первым рейсом
Посмотрите здесь:

C++ Определить количество чисел, меньших n, которые не делятся на 11
C++ Определить количество слов, которые содержат ровно четыре буквы
C++ Определить количество слов, которые содержат введенный символ
Найти количество элементов массива, которые находится между первым и последним отрицательным элементом C++
C++ Определить количество цифр, которые принадлежат заданным интервалам
Определить количество лет, в которые количество осадков превышало среднегодовое C++
Определить количество чисел, которые принадлежат заданному диапазону C++
C++ Определить в последовательности количество слов, которые начинаются с буквы a

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kerry_Jr
Модератор
 Аватар для Kerry_Jr
1868 / 1664 / 580
Регистрация: 14.05.2014
Сообщений: 4,777
Записей в блоге: 1
Завершенные тесты: 5
16.09.2015, 12:28     Определить массу и количество тыкв, которые будут вывезены первым рейсом #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Narkok, вот такой велосипед
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
32
33
34
35
36
37
38
39
40
41
42
#include <iostream>
#include <vector>
#include <algorithm>
 
int calc(const std::vector<int> v, const int p, int &count)
{
    int sum = 0;
    for (int i = 0; i < v.size(); ++i)
    {
        if (sum < p)
        {
            sum += v[i];
            ++count;
        }
        else if (sum > p)
        {
            sum -= v[i-1];
            --count;
            break;
        }
        else break;
    }
    return sum;
}
 
int main()
{
    int p, n, sum1 = 0, sum2 = 0, count1 = 0, count2 = 0;
    std::cin >> p >> n;
    std::vector<int> v(n);
    for_each(v.begin(), v.end(), [](int &i){ std::cin >> i; });
    std::sort(v.begin(), v.end(), [](int i, int j){ return i < j; });
    sum1 = calc(v, p, count1);
    std::sort(v.begin(), v.end(), [](int i, int j){ return i > j; });
    sum2 = calc(v, p, count2);
    if (sum1 > sum2 || (sum1 == sum2 && count1 > count2))
        std::cout << sum1 << ' ' << count1 << std::endl;
    else 
        std::cout << sum2 << ' ' << count2 << std::endl;
    
    return 0;
}
Yandex
Объявления
16.09.2015, 12:28     Определить массу и количество тыкв, которые будут вывезены первым рейсом
Ответ Создать тему
Опции темы

Текущее время: 08:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru