rt,29pts,其余全wa
#include<bits/stdc++.h>
#define int long long
const int maxn=70;
int a[maxn];
std::vector<int>ji;
int b[maxn];
int n;
void dfs(int p,int k){
if(p+1==n) {
if(ji.size()==1) {
std::cout<<k;
exit(0);
}
for(int i=1;i<ji.size();i++) if(ji[i]!=ji[i-1]) return ;
std::cout<<k;
exit(0);
}
//k
for(int i=0;i<ji.size();i++){
ji[i]+=a[p+1];
dfs(p+1,k);
ji[i]-=a[p+1];
}
ji.push_back(a[p+1]);
dfs(p+1,k);
ji.pop_back();
}
bool cmp(int x,int y){
return x>y;
}
signed main(){
std::cin>>n;
int sum=0;
int cnt=0;
for(int i=1;i<=n;i++){
std::cin>>b[i];
if(b[i]<=50) a[++cnt]=b[i],sum+=a[cnt];
}
n=cnt;
std::sort(a+1,a+n+1,cmp);
//搜索范围:a[1] ~ sum 间 所有sum的因数
for(int i=a[1];i<=sum;i++){
ji.clear();
if(sum%i==0) dfs(0,i);
}
}