Description
要求你分成两堆,两堆数的和分别为S1S1和S2S2
谁分的方案使得S1S1 * S1S1-S2S2 * S2S2的结果小(规定S1>=S2),谁就将获得胜利。
注:S2可以等于0。
Format
Input
第一行n,表示共有n个数
第二行共n个用空格隔开的正整数ai,表示给定的一堆正整数。
1<=n<=100,ai<=100
Output
输出就一个整数,表示S1S1-S2S2的最小值。
Samples
输入数据 1
4
1 2 3 4
Copy
输出数据 1
0
Copy
//
1和4一堆,2和3一堆,55 * 55 - 55 * 55 = 0
思路
利用背包枚举一个能算出来的值,再找一对最近的就行了。
代码见下:
#include<bits/stdc++.h>
using namespace std;
long long eee,n,m,jkj,lll=0,a,s2[1000101],n4[10000001],ni[120][101],nj[101],nk[101],b[100001],c[54],d[100001],k,kkk,p,ss[100001][51],sd[100001],sw,t,z0