rt,WA on Subtask#0的#2,Subtask#1的#32
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
int a[100];
bool vis[100];
bool happen[10000010];
int n;
int sum = 0;
double maxn = -1;
double Helen(double i,double j,double k){
double p;
p=(i+j+k)/2;
return sqrt(p*(p-i)*(p-j)*(p-k));
}
bool Tri(int i,int j,int k){
if(i+j>k&&i+k>j&&k+j>i)return true;
else return false;
}
//三边遍历
void dfs(int f,int s,int t)
{
if(happen[f*1500+s*150+t])
return;
happen[f*1500+s*150+t]=1;
if(Tri(f,s,t)&&f>0&&s>0&&t>0)
{
double hh=Helen(f,s,t);
if(hh>maxn)
maxn = hh;
}
for(int i=1;i<=n;i++)
{
if(vis[i]!=0) continue;
vis[i]=1;
dfs(f+a[i],s,sum-(f+a[i]+s));
dfs(f,s+a[i],sum-(f+s+a[i]));
vis[i]=0;
dfs(f,s,sum-(f+s));
}
}
int main() {
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
sum+=a[i];
}
dfs(0,0,0);
printf("%d",int(maxn*100));;
return 0;
}