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

Задача о стульях - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вечный календарь http://www.cyberforum.ru/cpp-beginners/thread1643613.html
Привет, человеки. Я тут решаю задачу, которая проверяется автоматической системой. Вот задача: Сейчас мы используем Григорианский календарь. В високосном году 366 дней, а в не високосном —...
C++ Записать в бинарный файл массив объектов Student (бинарный файловый ввод/вывод) Здравствуйте. Стоит задача записать в бинарный файл массив объектов student: class student { string firstname,lastname, group; char year; bool sex; public: void setStudent(); bool... http://www.cyberforum.ru/cpp-beginners/thread1643557.html
C++ Рассчитать сумму ежемесячных выплат процентов по депозиту
Недавно начал изучать с++ и наткнулся на такую задачу: Рассчитать сумму ежемесячных выплат процентов по депозиту, если договор составлен на полгода под 6% годовых или на год под 8% годовых. С...
Написать модульную программу расчета и печати оплаты за парковку C++
Здравствуйте! Изучаю функции...написал такой код на задачу, как его можно упростить за счет возможностей языка именно с помощью функцияй, никаких классов ничего. Ну как-бы не знаю на первых порах вот...
C++ Найти произведение членов пифагорейского триплета, сумма которых равна заданному числу http://www.cyberforum.ru/cpp-beginners/thread1643531.html
Здравствуйте! Пожалуйста, помогите. Неизвестный автор пишет программу Специальный триплет Пифагорейский Пифагорейский триплет это набор трех чисел, a < b < c, для которых, a^2 + b^2 = c^2 ...
C++ Реализовать подсчет количества объектов класса, используя статическую переменную-член класса как реализовать подсчет количества объектов класса (используя статическую переменную-член класса), а также статическую функцию, которая показывает количество объектов? заранее спасибо за помощь. подробнее

Показать сообщение отдельно
Fennec
1 / 1 / 0
Регистрация: 10.02.2010
Сообщений: 36

Задача о стульях - C++

20.01.2016, 20:44. Просмотров 378. Ответов 2
Метки (Все метки)

Итак, следуя хорошей манере создавать по теме на задачу, продолжим.

 Комментарий модератора 
П.5.18.Правил
Запрещено размещать задания и решения в виде картинок и других файлов с их текстом.


Вот сама задача:
«Где бы выгодно купить стулья, а потом выгодно их продать» — думал Остап после неудачной погони за 12 стульями.
Он решил подзаработать себе на билет до Рио продажей мебели. Прежде чем начать работу, он решил понаблюдать за происходящим и придумать, как побольше заработать.
Остап узнал, что в городе все продавцы продают только по одному стулу, и каждый покупатель готов купить не более одного. Всего он нашел N предложений, стоимость стула у i-го из продавцов равна Ai рублей, конечно, цены могут отличаться. Кроме того, он нашёл M потенциальных покупателей, каждый из которых может купить стул не дороже Bi рублей. При этом сам Остап может купить и продать любое количество товара.
Остап хочет получить наибольшую прибыль, поэтому он обратился за помощью к вам. Определите максимальную прибыль, которую он может получить.

Формат ввода:

Первая строка входных данных содержит два целых числа N, M (1 ≤ N, M ≤ 105) — количество предложений и количество потенциальных покупателей соответственно.

Вторая строка содержит N целых чисел Ai (0 ≤ Ai ≤ 109) цены, по которым продавцы готовы продавать стулья.

Третья строка содержит M целых чисел Bi (0 ≤ Bi ≤ 109) суммы, которые потенциальные покупатели готовы отдать при покупке стула.

Формат вывода:

Выведите одно целое число равное максимальной прибыли, которую Остап может получить.

Пример:

Ввод:
6 5
5 10 8 4 7 2
3 1 11 18 9

Вывод:
27
Вот мое решение:
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
43
44
45
46
47
48
49
50
51
52
53
54
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm> 
#include <functional>
 
using namespace std;
 
int main()
{
    ifstream input("input.txt");
 
    int sellersNumber = 0;
    int buyersNumber = 0;
 
    input >> sellersNumber;
    input >> buyersNumber;
 
    vector<int> sellPrices(sellersNumber);
    vector<int> buyPrices(buyersNumber);
 
    for (int i = 0; i < sellersNumber; i++)
    {
        input >> sellPrices[i];
    }
 
    for (int i = 0; i < buyersNumber; i++)
    {
        input >> buyPrices[i];
    }
 
    input.close();
 
    sort(sellPrices.begin(), sellPrices.end());
    sort(buyPrices.begin(), buyPrices.end(), std::greater<int>());
 
    int result = 0;
    int minRange = min(sellPrices.size(), buyPrices.size());
 
    for (int i = 0; i < minRange; i++)
    {
        int profit = buyPrices[i] - sellPrices[i];
        if (profit > 0)
        {
            result += profit;
        }
    }
 
    ofstream output("output.txt");
    output << result;
    output.close();
 
    return 0;
}
логика простецкая: мы не можем получить прибыль покупая дороже чем продаем. В системе проходит 19 тестов, после чего падает. Что я делаю не так?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru