Матч
18, Яблочный сад (ApplePie)
Яблочный сад имеет вид
прямоугольника с вершинами (0, 0), (0, 100), (100, 100), (100, 0). i - ое яблоко падает на землю в день
day[i], и имеет координаты (x[i], y[i]). Вы можете подобрать яблоко, если только оно упало на землю в
границах прямоугольного сада. Определить день, в который можно собрать howMany яблок. Если этого совершить невозможно,
вернуть -1.
Класс: ApplePie
Метод: int
getApples(vector<int> x, vector<int> y,
vector<int> day, int
howMany)
Ограничения:
x, y и day содержат одинаковой количество элементов, от 1 до 50, -1000 £ x[i], y[i] £ 1000, 1 £ day £ 365, day[i] £ day[i+1], 1 £ howMany £ n, где n – количество элементов в x.
Вход. Два массива целых чисел x и y – координаты упавших яблок, массив day,
описывающий дни падения яблок и количество яблок howMany, которое требуется собрать.
Выход. День, в который можно собрать howMany яблок. Если этого совершить невозможно, вернуть -1.
Пример входа
low |
high |
1 |
5 |
7 |
7 |
56 |
99 |
Пример выхода
4
0
16
РЕШЕНИЕ
элементарные вычисления
Для
каждого яблока проверяем, упало ли оно в границах сада. Если да, то увеличиваем
количество собранных яблок в переменной res.
Как только соберется howMany яблок,
возвращаем день падения последнего подобранного яблока. Если массивы
просмотрены до конца, а howMany яблок
не собрано, то возвращаем -1.
ПРОГРАММА
#include <cstdio>
#include <vector>
using namespace std;
class ApplePie
{
public:
int getApples(vector<int>
x, vector<int> y, vector<int> day, int
howMany)
{
int i,res = 0;
for(i=0;i<x.size();i++)
{
if (!((x[i] > 100) || (x[i] < 0)
|| (y[i] > 100) || (y[i] < 0))) res++;
if (res == howMany) return day[i];
}
return -1;
}
};