Матч
217, Потребление горючего (FuelConsumption)
Дивизион 2, Уровень
1
Необходимо совершить путешествие
на машине с ограниченным количеством горючего. Известно количество горючего,
потребляемое автомобилем при разных скоростях. Необходимо определить максимальное
расстояние, которое можно проехать при оптимальном выборе скорости движения.
Класс: FuelConsumption
Метод: double
maximalDistance(vector<int> velocities,
vector<int>
consumptions, int fuel)
Ограничения:
2 £ velocities[i]
£ 250, 1000
£
consumptions [i] £ 20000,
100 £ fuel £ 50000, массив velocities
не содержит одинаковых элементов.
Вход. Два целочисленных массива velocities, consumptions и исходное количество
топлива fuel в миллилитрах.
consumptions[i] содержит количество
литров, потребляемое автомобилем в течение одного часа при движении со
скоростью velocities[i].
Выход. Максимальное расстояние, которое может проехать автомобиль.
Скорость автомобиля должна быть постоянной на всем участке движения.
Пример входа
velocities |
consumptions |
fuel |
{100} |
{10000} |
10000 |
{70, 80, 90, 100, 60, 110} |
{4000, 4000, 4000, 4000, 4000, 4000} |
40000 |
{5, 10, 20, 40, 80} |
{1000, 2500, 6250, 9000, 18000} |
47832 |
Пример выхода
100.0
1100.0
239.16
РЕШЕНИЕ
элементарные вычисления
Скорость движения автомобиля
должна равняться такому velocities[i],
для которого отношение d = velocities[i]
/ consumptions[i] является
наибольшим. Отношение d равно расстоянию, которое можно проехать на одном литре
бензина. Максимальное расстояние, которое может проехать автомобиль, равно fuel * d.
ПРОГРАММА
#include <cstdio>
#include <string>
#include <vector>
using namespace
std;
class FuelConsumption
{
public:
double maximalDistance(vector<int> velocities, vector<int> consumptions, int fuel)
{
double d = 0;
for(int i = 0; i <
velocities.size(); i++)
if (1.0*velocities[i] / consumptions[i] > d)
d = 1.0 *
velocities[i] / consumptions[i];
return fuel * d;
}
};