Матч 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;

  }

};