rt
#include<bits/stdc++.h>
using namespace std;
int n;
int a[105];
int book[105];
int max_,ans;
int l,q,x;
bool cmp(int x,int y) {
return x>y;
}
void dfs(int k,int last,int l_) {
if(k==x) {
q=1;
return;
}
if(!l_) {
int i;
for(i=1; i<=n; i++)
if(!book[i]) {
book[i]=1;
break;
}
dfs(k+1,i,l_-a[i]);
}
for(int i=last+1; i<=n; i++)
if(!book[i] && l_>=a[i]) {
book[i]=1;
dfs(k,i,l_-a[i]);
book[i]=0;
int j=i;
while(i<n && a[i]==a[j])
i++;
if(i==n)
return;
}
}
int main() {
cin>>n;
for(int i=1; i<=n; i++) {
cin>>a[i];
max_=max(max_,a[i]);
ans+=a[i];
}
sort(a+1,a+n+1,cmp);
for(int i=max_; i<=ans; i++)
if(!(ans%i)) {
memset(book,0,sizeof(book));
book[1]=1;
q=0;
l=i;
x=ans/i;
dfs(1,1,l-a[1]);
if(q) {
cout<<l;
break;
}
}
return 0;
}
样例都没过,救我呜呜