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