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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Narkok
0 / 0 / 0
Регистрация: 21.10.2014
Сообщений: 12
#1

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

15.09.2015, 17:59. Просмотров 211. Ответов 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++
Объявить и проинициализировать массив случайными числами в диапазоне . Найти сколько элементов находится между первым и последним...

Определить количество элементов между первым и последним нулевыми элементами - C++
Решите пожалуйста через указатели. В одномерном массиве из 100 элементов определить к-во элементов между первым и последним нулевыми...

Определить количество лет, в которые количество осадков превышало среднегодовое - C++
В массиве хранятся сведения о количестве осадков, выпавших за пять лет по месяцам. Определить количество лет, в которые количество осадков...

Определить количество лет, в которые количество осадков превышало среднегодовое - C++
В массиве хранятся сведения о количестве осадков, выпавших за пять лет по месяцам. Определить количество лет, в которые количество осадков...

Вводить массив символов до тех пор, пока два последних введенных символа не будут равны двум первым - C++
Ввод массива символов до тех пор, пока два последних введенных символа не будут равны двум первым введенным символам. Вот мой код,...

Определить количество чисел, меньших n, которые не делятся на 11 - C++
Не знаю как решить. Определить количество натуральных чисел меньших n. Которые не делятся на 11. Протестировать на n=10, n=100,n =1000.

Определить количество строк матрицы, которые упорядочены по возрастанию - C++
В матрице А(n x n) определить количество строк ,которые упорядочены по возрастанию.Использовать подпрограмму проверки упорядоченности...

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

Определить количество слов, которые содержат введенный символ - C++
Дана строка из символов латинского алфавита, разделенных одним или несколькими пробелами. Определить количество слов, которые содержат...

Определить количество цифр, которые принадлежат заданным интервалам - C++
Заданные значения А и B (A &lt;B) и последовательность целых чисел. Используя функцию, для последовательности целых чисел определить...

Определить количество чисел, которые не принадлежат заданному интервалу - C++
вводим числа A и B . Определить количество чисел в интервале , которые не принадлежат интервалу . Результаты выводем на экран. вывести ...

Определить в последовательности количество слов, которые начинаются с буквы a - C++
Дана непустая последовательность слов из латинских букв, соседние слова отделены друг от друга запятой, за последним словом – точка....


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kerry_Jr
Модератор
Эксперт PHP
2167 / 1963 / 685
Регистрация: 14.05.2014
Сообщений: 5,747
Записей в блоге: 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     Определить массу и количество тыкв, которые будут вывезены первым рейсом
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru