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

Определить минимальное количество монет, которое должно находиться в автомате, чтобы всем хватило сдачи - C++

Восстановить пароль Регистрация
 
Prolamer
0 / 0 / 0
Регистрация: 24.01.2016
Сообщений: 16
29.01.2016, 10:29     Определить минимальное количество монет, которое должно находиться в автомате, чтобы всем хватило сдачи #1
Здравствуйте.
Не первый раз создаю тему об олимпиадных задачах , думаю, и не последнюю))
Возникла проблема со следующей задачей:

Фирма bookface, созданная в Ужляндии, в которой работает Степан, решила установить в своих офисах автоматы по продаже чая и кофе, чтобы программисты во время перерыва могли с толком провести время.
Стоимость стакана чая и кофе в автомате предполагается установить равной пяти ужикам (такая в Ужляндии валюта). Автоматы будут принимать монеты по 5 и 10 ужиков, а также купюры в 10, 50 и 100 ужиков. Когда программисту нужно выдавать сдачу (т.е. когда программист бросил в автомат монету в 10 ужиков, или купюру в 10, 50 или 100 ужиков), автомат выдает сдачу монетами в пять ужиков; если же пассажир бросил в автомат монету в пять ужиков, то автомат ее сохраняет и может использовать для сдачи следующим программистам.
Очевидно, что, чтобы обеспечить возможность выдачи сдачи всем программистам, может потребоваться сначала загрузить в автомат некоторое количество монет в пять ужиков. Сейчас в офисах фирмы проходят испытания с целью определить минимальное количество монет, которые надо загрузить в автомат перед рабочим днем.
Вам дано протокол одного из таких испытаний: известный порядок, в котором программисты оплачивали свои покупки различными монетами и купюрами. Определите, какое минимальное количество монет в пять ужиков, должно было сначала находиться в автомате, чтобы всем пассажирам хватило сдачи.

Входные данные:
В первой строке входного файла находится одно натуральное число N - количество покупок в автомате, которые были осуществлены в ходе испытания (1 ≤ N ≤ 50000). Во второй строке находятся N натуральных чисел, каждое из которых равно номинала монеты или купюры, которую использовал очередной программист для оплаты; каждый номинал может принимать одно из четырех значений: 5, 10, 50 или 100.

Исходные данные:
В выходной файл выведите одно число - минимальное количество монет в пять Ужик, которые надо было загрузить в автомат сначала, чтобы всем программистам хватило сдачи.

Примечание:
В первом примере одна монета в пять ужиков потребуется для сдачи первом программисту и 19 монет - третьему, но при сдаче третьей можно использовать ту монету, которую бросит второй программист, поэтому сначала в автомате достаточно 19 монет.
Во втором примере сдачу третьему программисту можно выдать, используя монету первого или второго покупателя, и поэтому не нужно загружать монеты в автомат сначала.
В третьем примере первому программисту нужны девять монет сдачи, и все они должны сначала находится в автомате.


мой код:
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
#include <iostream>
#include <fstream>
using namespace std;
int main(){
    int five = 0;
    int k0 = 0;
    int otv;
    int n;
    ifstream fin("testing.in");
    fin >> n;
    int arr[n];
    for(int i = 0; i < n; i++){
        fin >> arr[i+1];
    }
    for(int i = 1; i <= n; i++){
        if(arr[i]==5){
            five++;
        }
 
        otv = five - (arr[i] / 5 -1);
        if(otv < 0){
            k0 += -otv;
        }
 
    }
    ofstream fout("testing.out");
    fout << k0;
    return 0;
}
проблема заключается в том, что этот код проходит не все тесты(скрин прилагется)
объясните , пожалуйста, в чём может быть проблема?
спасибо за внимание
Миниатюры
Определить минимальное количество монет, которое должно находиться в автомате, чтобы всем хватило сдачи  
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.01.2016, 10:29     Определить минимальное количество монет, которое должно находиться в автомате, чтобы всем хватило сдачи
Посмотрите здесь:

Определить наименьшее время, которое должно пройти до того момента, когда часовая и минутная стрелки совпадут C++
Минимальное количество байт, которое займёт отрицательное число C++
Определить наименьшее время, которое должно пройти до того момента, когда часовая и минутная стрелка на циферблате совпадут C++
C++ Найти минимальное количество купюр, которое необходимо использовать, чтобы выдать сумму в n гривен
C++ Определить минимальное количество символов, которые нужно добавить в строку, чтобы получить палиндром
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
_Valera_
 Аватар для _Valera_
486 / 368 / 94
Регистрация: 27.01.2015
Сообщений: 1,588
29.01.2016, 10:59     Определить минимальное количество монет, которое должно находиться в автомате, чтобы всем хватило сдачи #2
Цитата Сообщение от Prolamer Посмотреть сообщение
установить равной пяти ужикам
чего монет или бумажек?

Цитата Сообщение от Prolamer Посмотреть сообщение
монеты или купюры,
это при тем что у нас есть 10 - монетная и 10 - купюрная единица, как отличать?

Цитата Сообщение от Prolamer Посмотреть сообщение
В первом примере одна монета в пять ужиков потребуется для сдачи первом программисту
почему, если он кинул 5 при том что напиток стоит 5? А это не то, где вобще первый пример?

Цитата Сообщение от Prolamer Посмотреть сообщение
arr[i+1];
тут выход за массив

Цитата Сообщение от Prolamer Посмотреть сообщение
otv = five - (arr[i] / 5 -1);
может нужно посчитать сколько всего денег ввели, потом найти из этого сколько должно быть выдано сдачи, потом еще вычесть количество оплат 5-монетами. и останется сколько нужно положить в автомат, то есть ответ.
Prolamer
0 / 0 / 0
Регистрация: 24.01.2016
Сообщений: 16
29.01.2016, 11:03  [ТС]     Определить минимальное количество монет, которое должно находиться в автомате, чтобы всем хватило сдачи #3
извините, тупанул
примеры
Миниатюры
Определить минимальное количество монет, которое должно находиться в автомате, чтобы всем хватило сдачи  
Dimension
Dimension
547 / 428 / 132
Регистрация: 08.04.2014
Сообщений: 1,693
Завершенные тесты: 1
29.01.2016, 11:06     Определить минимальное количество монет, которое должно находиться в автомате, чтобы всем хватило сдачи #4
вы я вижу хотите что бы за вас всю олимпиаду решили?
Prolamer
0 / 0 / 0
Регистрация: 24.01.2016
Сообщений: 16
29.01.2016, 11:08  [ТС]     Определить минимальное количество монет, которое должно находиться в автомате, чтобы всем хватило сдачи #5
Цитата Сообщение от Dimension Посмотреть сообщение
вы я вижу хотите что бы за вас всю олимпиаду решили?
извините, но я спрашиваю, потому что у меня возникают проблемы
обратиться больше не к кому
к тому же я пишу свой код, чтобы кто-то проверил что не так...
_Valera_
 Аватар для _Valera_
486 / 368 / 94
Регистрация: 27.01.2015
Сообщений: 1,588
29.01.2016, 11:16     Определить минимальное количество монет, которое должно находиться в автомате, чтобы всем хватило сдачи #6
Цитата Сообщение от Dimension Посмотреть сообщение
вы я вижу хотите что бы за вас всю олимпиаду решили?
у него хоть код есть, свой. И скрин прикладывать не надо)

Цитата Сообщение от Prolamer Посмотреть сообщение
примеры
ну смысл тот же что и в первом ответе
vndtta
66 / 43 / 5
Регистрация: 17.10.2011
Сообщений: 146
Завершенные тесты: 1
29.01.2016, 12:14     Определить минимальное количество монет, которое должно находиться в автомате, чтобы всем хватило сдачи #7
в программе нет счетчика купюр, если можно давать сдачу купюрами, то не нужно использовать монеты, так можно отсчитать монет больше чем требуется, например вариант
4
10 10 50 100

Добавлено через 30 минут
в общем прочитал условие внимательней,
в коде есть увеличение монет, когда автомат их принимает, но нет уменьшения, когда автомат их выдает
пример:
5
5 10 10 10 10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.01.2016, 14:14     Определить минимальное количество монет, которое должно находиться в автомате, чтобы всем хватило сдачи
Еще ссылки по теме:

Найти минимальное количество шариков, которое необходимо перекрасить, чтобы все шарики были одного цвета C++
C++ Минимальное количество долек апельсина, чтобы всем досталось поровну
Определить минимальное число и номиналы банкнот и монет, необходимые для набора заданной суммы C++

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

Или воспользуйтесь поиском по форуму:
_Scorpius_
46 / 46 / 23
Регистрация: 01.04.2015
Сообщений: 102
29.01.2016, 14:14     Определить минимальное количество монет, которое должно находиться в автомате, чтобы всем хватило сдачи #8
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Как вариант:
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
#include <iostream>
#include <fstream>
 
using namespace std;
 
int main()
{
    int five = 0, k0 = 0;
    const int n = 3;
    int arr[n] = {10, 5, 100};
//    int arr[n] = {5, 5, 10};
//    int arr[n] = {50, 5, 5};
 
    for(int i = 0; i < n; ++i)
    {
        if(arr[i] != 5)
            five += arr[i] / 5 - 1;
        else
            --five;
 
        if (five > k0)
            k0 = five;
    }
 
    if (k0 <= 0)
        k0 = 0;
    cout << k0 << endl;
 
    return 0;
}
Работу с файлами сам реализуешь
Yandex
Объявления
29.01.2016, 14:14     Определить минимальное количество монет, которое должно находиться в автомате, чтобы всем хватило сдачи
Ответ Создать тему
Опции темы

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