1395 - 分治法求最大值过程

我们可以利用分治法求数组的和,即
sum(l,r)=sum(l,m)+sum(m+1,r);(m=(l+r)/2)
sum(l,r)=a[l](当l==r时), 我们也可以利用类似的方法来求数组的最大值,现在给定n个元素的数组,请利用上述类似的分治法求出最大值,并按样例格式输出每一步的结果 (即对于每一个(l,r)的子问题,输出:MAX(l,r)=最大值,数组下标从1开始使用。)
注意:
为了确保你的程序在每次解决(l,r)的子问题时,总是能做到先解决(l,m),再解决(m+1,r),请使用如下的所示类似的中间变量的方法: int tmpa=sum(l,m);
int tmpb=sum(m+1,r);
sum(l,r)=tmpa+tmpb;

输入

两行,第一行一个整数n,表示元素的个数;第二行n个整数。

输出

每一步的计算结果,每占一行。
最后一行输出整个数组的最大值。

样例

输入

6
1 2 3 4 5 6

输出

Max(1,1)=1
Max(2,2)=2
Max(1,2)=2
Max(3,3)=3
Max(1,3)=3
Max(4,4)=4
Max(5,5)=5
Max(4,5)=5
Max(6,6)=6
Max(4,6)=6
Max(1,6)=6
6

提示

n<=3e4,a[i]<=1e6。

来源

分治

题目参数

时间限制 1 秒
内存限制 32 MB
提交次数 0
通过人数 0
统计

上一题 下一题