设原数组共有 n 个消息,总权重和为 S。
假设其中一个端口分到 k 个消息,这 k 个消息的权重和为 x,那么另一个端口有 n−k 个消息,权重和为 S−x。
要求两个端口处理消息的权重均值相同,因此有:
某厂商生产的交换机需要对用户的信息进行处理:按照信息的类别划分优先级,并为每种流量类型设置权重,用于在同优先级的场景下,让设备优先处理权重更高的消息。具体分类如下:
| 流量类型 | 权重 |
|---|---|
| 媒体流 | 20 |
| 信令流 | 15 |
| 内部管理流量 | 5 |
| 其他流量 | 0 |
假设某台交换机当前由 2 个端口组成一组,共同负责消息的接收与处理。这两个端口需要处理的所有消息的权重构成数组 arr。请问是否存在一种消息分发方式,使得每个端口处理的消息的权重均值相同,即能否将权重数组拆分为两个均值相等的子数组?本题只要求判断是否存在这样的分组,无需考虑多种分组方式。
输入为一个字符串,每个数字代表一条消息的权重。权重的取值只能来自上表,即 20、15、5、0,不存在其他值。各权重之间用空格分隔,例如:
5 5 5 20 15 15 5 5 20 15 15 5 5 20 15 15 15
数组大小(即消息数量)满足 1≤n≤100。
第一行:输出 0 或 1。1 表示存在一种消息分发方式,使得各端口处理的消息权重均值相同;0 表示不存在这样的分发方式。
第二行:若第一行输出为 1,则输出其中一个子数组的元素和;若两个子数组的元素和不同,则输出较小的那一个。若第一行输出为 0,则本行无需输出。
输入
15 20
输出
0
说明
不存在任何划分方式,能使两个子数组的均值相同,因此输出 0。
输入
5 20 15 15 5 5 5 20 5 5 15 15
输出
1
65
说明
每个端口处理的消息权重可以取 5 5 5 20 15 15,此时两个端口处理的消息权重均值一致,均为 10.8333。
输入
15 20 5 20
输出
1
15
说明
可以划分为两个组,均值均为 15:
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册