Матч 193, Лужа (SwimmingPool)

Дивизион 2, Уровень 1

 

Имеется лужа некоторой формы, имеющей определенную глубину. Известно, что поперечный разрез лужи одинаков на всех глубинах. Массив rates содержит скорость наполнения лужи в определенные интервалы времени,  durations[i] содержит время, в течении которого лужа наполнялась со скоростью rates[i]. За все интервалы времени, указанные в durations, лужа наполнилась до высоты height. Необходимо определить площадь поперечного разреза лужи.

 

Класс: SwimmingPool

Метод: int area(vector<int> rates, vector<int> durations,

                int height)

Ограничения: массивы rates и durations содержат одинаковое количество чисел, 1 £ rates[i],durations[i],height £ 100.

 

Вход. Массивы  rates и durations, содержащие скорость и время наполнения лужи. Целое число height содержит глубину лужи.

 

Выход. Площадь поперечного разреза лужи.

 

Пример входа

rates

durations

height

{1,2,3,4,5}

{5,4,3,2,1}

10

{5,4,3,2,1}

{1,2,3,4,5}

100

{100}

{1}

100

 

Пример выхода

3

0

1

 

 

РЕШЕНИЕ

элементарные вычисления

 

Вычисляем объем воды, которой наполнилась лужа. Он равен скалярному произведению векторов rates и durations. Разделив полученный объем на высоту height, получим площадь поперечного разреза лужи.

 

ПРОГРАММА

 

#include <cstdio>

#include <vector>

#include <numeric>

using namespace std;

 

class SwimmingPool

{

public:

  int area(vector<int> rates, vector<int> durations, int height)

  {

    return inner_product(rates.begin(),rates.end(),durations.begin(),0) / height;

  }

};