#ASC202626. 传感器去极值平均滤波

传感器去极值平均滤波

题目背景

各种传感器会受到偶发噪声干扰,也可能因通信失败而丢失读数。控制程序需要从每组采样中计算一个稳定的数值。

题目描述

共有 n 组采样,每组包含 m 个原始读数。读数 -1 表示采样失败,其余读数均为 0 到 4095 的整数。对每组采样,按以下顺序处理:

  1. 忽略所有值为 -1 的读数。
  2. 若有效读数少于 3 个,输出 INVALID,本组不再处理。
  3. 从有效读数中恰好删去一个最大值和一个最小值。即使有多个读数并列最大或最小,也只各删去一个。
  4. 对剩余读数求算术平均值,舍去小数部分,得到滤波值。
  5. 在滤波值上加校准量 c,再将结果限制在 0 到 4095 之间,得到本组最终输出。

各组采样相互独立。

输入格式

第一行包含三个整数 n、m、c,分别表示采样组数、每组原始读数个数和校准量。

接下来 n 行,每行包含 m 个整数,表示一组原始读数。

输出格式

输出 n 行。对每组采样,输出最终数值;若有效读数少于 3 个,则输出 INVALID。

样例

5 5 20
100 102 99 98 101
-1 0 4095 0 -1
-1 -1 42 -1 -1
4095 4095 4095 4095 4095
1 2 3 4 5
120
20
INVALID
4095
23

样例解释

第一组删去 98 和 102 后,平均值为 100,加上 20 得到 120。第二组只有 3 个有效读数,删去 0 和 4095 后剩余 0。第四组加校准量后超过上限,因此输出 4095。

数据范围

1 ≤ n ≤ 1000,3 ≤ m ≤ 50,-4095 ≤ c ≤ 4095。每个原始读数为 -1 或 0 到 4095 的整数。

时间限制:1 秒;内存限制:256 MiB。