题目
试题编号: | 201909-1 |
试题名称: | 小明种苹果 |
时间限制: | 2.0s |
内存限制: | 512.0MB |
题目描述
小明在他的果园里种了一些苹果树。为了保证苹果的品质,在种植过程中要进行若干轮疏果操作,也就是提前从树上把不好的苹果去掉。第一轮疏果操作开始前,小明记录了每棵树上苹果的个数。每轮疏果操作时,小明都记录了从每棵树上去掉的苹果个数。在最后一轮疏果操作结束后,请帮助小明统计相关的信息。
输入格式
从标准输入读入数据。
第1行包含两个正整数 N 和 M,分别表示苹果树的棵数和疏果操作的轮数。
第1+i行(1 ≤ i ≤ N),每行包含 M+1个整数 ai0,ai1,….,aiM。其中ao为正整数,表示第一轮疏果操作开始前第i棵树上苹果的个数。aij(1 ≤ j ≤ M)为零或负整数,表示第j轮疏果操作时从第i棵树上去掉的苹果个数。如果为零,表示没有去掉苹果;如果为负,其绝对值为去掉的苹果个数。
每行中相邻两个数之间用一个空格分隔。
输出格式
输出到标准输出。
输出只有一行,包含三个整数 T、k和 P。其中,
·T为最后一轮疏果操作后所有苹果树上剩下的苹果总数(假设苹果不会因为其
他原因减少);
·k为疏果个数(也就是疏果操作去掉的苹果个数)最多的苹果树编号(如有并列,
输出满足条件的最小编号);
·P为该苹果树的疏果个数。
相邻两个数之间用一个空格分隔。输入数据保证是正确的,也就是说,每棵树在全部疏果操作结束后剩下的苹果个数是非负的。
样例1 输入
3 3
73 -8 -6 -4
76 -5 -10 -8
80 -6 -15 0
样例1 输出
167 2 23
样例1 解释
第1棵苹果树的疏果个数为 8+6+4= 18,第 2 棵为5+10+8= 23,第 3棵为6+15+0= 21,因此最后一轮疏果操作后全部苹果树上的苹果个数总和为(73-18)+(76-23)+(80-21)=167,疏果个数最多的是第2棵数,其疏果个数为23。
样例2 输入
2 2
10 -3-1
15 -4 0
样例 2 输出
17 1 4
样例 2 解释
两棵树的疏果个数均为4,应该输出编号最小的第1棵树。
子任务
|aij| ≤ 106,对所有1 ≤ i ≤ N,0 ≤ j ≤ M。
程序代码
# 输入苹果棵树和疏果轮数
n,m = input().split()
n = int(n)
m = int(m)
# 剩余总苹果数量
sum = 0
# 疏果数量最多的苹果树编号
maxIndex = 0
# 该苹果树疏果的数量
maxCount = 0
# 遍历所有苹果树
for i in range(n):
# 初始化疏果数量
subSum = 0
# 输入原始苹果数和疏果数量
numberList = input().split()
number = int(numberList.pop(0))
# 类型转换并求和
for j in range(m):
numberList[j] = int(numberList[j])
subSum -= numberList[j] # 注意此处符号
sum += number - subSum # 求总疏果数量
# 计算疏果数量最多的苹果树
if subSum > maxCount:
maxCount = subSum
maxIndex = i + 1
# 输出
print(sum,maxIndex,maxCount)