Условие
Дан набор из N измерений датчика. Каждое измерение содержит время в секундах от начала наблюдения и температуру в десятых долях градуса Цельсия. Температура считается допустимой, если её значение находится в диапазоне от 0 до 500 включительно. Остальные измерения исключаются из расчётов.
Найдите количество допустимых измерений, минимальную и максимальную температуру и среднюю температуру среди допустимых измерений. Время измерения необходимо сохранить вместе с температурой, но в этой задаче оно не влияет на расчёты и не выводится.
Объявите структуру struct Measurement с целочисленными полями time_s и raw_temperature. Сохраните измерения в массиве структур. Объявите структуру struct Statistics с целочисленными полями valid_count, min_raw, max_raw и полем average_c типа double.
Реализуйте функцию struct Statistics analyse_measurements(const struct Measurement measurements[], int count), которая возвращает статистику, не изменяет массив и не выполняет ввод или вывод. В полях min_raw и max_raw храните температуру в десятых долях градуса, в average_c — среднюю температуру в градусах Цельсия. Если допустимых измерений нет, все поля результата должны быть равны нулю; признаком отсутствия данных служит valid_count == 0.
В функции main прочитайте данные, вызовите функцию и выведите результат. При вычислении среднего каждое допустимое измерение учитывается один раз; усреднять по длительности между измерениями не требуется.
Ограничения
Время: 2 секунды. Память: 64 МиБ. Вывод: до 2 МиБ. Стандарты: C11 / C++17.
Входные данные
В первой строке вводится целое число N — количество измерений. В следующих N строках вводятся по два целых числа time_s и raw_temperature. Ограничения: 1 ≤ N ≤ 1000, 0 ≤ time_s ≤ 10⁹, −1000 ≤ raw_temperature ≤ 1000. Времена измерений заданы в порядке неубывания и могут повторяться.
Выходные данные
Если допустимых измерений нет, выведите строку NO DATA.
Иначе выведите в одной строке через пробел четыре значения: количество допустимых измерений, минимальную температуру, максимальную температуру и среднюю температуру. Все три температуры выведите в градусах Цельсия с шестью знаками после десятичной точки.
Примеры
5 0 240 1 250 2 260 3 -1 4 280
4 24.000000 28.000000 25.750000
2 0 -1 1 501
NO DATA
2 0 0 0 500
2 0.000000 50.000000 25.000000