定义dfs(l,r,sum)表示当前左边界为l(不包含),有边界为r(不包含),总计和为sum的情况。
则下一步考虑向左或者向右搜索,即dfs(l−1,r,sum+a[l])或者dfs(l,r+1,sum+a[r])。
当然,l和r不能超过数组的左右边界。
由于1≤ai≤109,且每次均只能加比自己大的数,因此最多仅能扩展30次(230=1073741824)
给出一个长度为n的数组a1,a2,...,an,假如你从x点出发(初始区间为[x,x],初始价值为ax),每到
达一个点就把这个点加入到区间内并获得当前点的价值,每次能将当前所拥有的区间向右或者向左扩展
一个(不能超过边界),且被拓展的位置的值一定要大于当前所拥有的价值之和。
输出对于起点x=1,2,...,n,答案分别是多少。
第一行正整数n,表示数组的长度。
接下来一行n个正整数代表a1,a2,...,an。
1≤n≤105,1≤ai≤109
输出一行n个数字代表答案。
输入
3
2 1 4
输出
2 7 4
说明
从1,3出发只能在自己2出发先变成[1,2],再变成[2,3]
输入
5
2 3 6 1 4
输出
11 9 6 11 4