A.Pizza Separation
Students Vasya and Petya are studying at the BSU (Byteland State University). At one of the breaks they decided to order a pizza. In this problem pizza is a circle of some radius. The pizza was delivered already cut into n pieces. The i-th piece is a sector of angle equal to ai. Vasya and Petya want to divide all pieces of pizza into two continuous sectors in such way that the difference between angles of these sectors is minimal. Sector angle is sum of angles of all pieces in it. Pay attention, that one of sectors can be empty.
Input
The first line contains one integer n (1 ≤ n ≤ 360) — the number of pieces into which the delivered pizza was cut.
The second line contains n integers ai (1 ≤ ai ≤ 360) — the angles of the sectors into which the pizza was cut. The sum of all ai is 360.
Output
Print one integer — the minimal difference between angles of sectors that will go to Vasya and Petya.
Examples
input
4
90 90 90 90
output
0
input
3
100 100 160
output
40
input
1
360
output
360
input
4
170 30 150 10
output
0
//英语不好是真的伤不起,题目意思都没正确理解。
题意:把一个圆分成连续的两部分,找出这两部分的最小差值。
不妨设一个部分为X1,另一个部分为X2,则:
min|X1-X2|=min|X1-(360-X2)|=2*min|180-X1|
根据这个题目的意思就是找连续和,看哪个和180的差最小,问题就变成了找连续和。
核心代码如下:
int i,j,k,da=abs(180-a[0]),sum;
for(i=0;i<n-1;i++)
for(j=i;j<n;j++)
{
sum=0;
for(k=i;k<j;k++)
{
sum+=a[k];
if(abs(180-sum)<da) da=abs(180-sum);
}
}
以上代码就找出了连续和与180的最小差(因为数字小,所以直接枚举),答案就直接输出最小差的两倍。