/*
这道题和UVa839很像,很容易想到是用DFS,其实二叉树的先序遍历就是一种DFS
考虑到如果起始位置设为0的话,位置有正有负,需要用字典记录对应位置的值,
如果起始位置设为大数组中间位置就没有这样的问题,这是第一个技巧
其次,在确定了DFS思路以后,很容易想到在DFS函数内部读取一个数字处理一个数字,
但是这样有一个问题,就是无法判断读取是否结束,就是在读取单个-1的时候,这时候应该判断结束程序的,
书中的技巧是另外设立一个init函数来先读取第一个数字,并且判断是否结束程序。
*/
#include <iostream>
#include<cstdio>
#include<string>
#include<map>
#include<vector>
#include<sstream>
#include<string.h>
using namespace std;
const int maxn=10000;
int sum[maxn];
void build(int