Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
198662 | suishou | 训练赛 | C++ | 解答错误 | 0 | 64 MS | 50408 KB | 1022 | 2025-10-13 20:15:56 |
#include<bits/stdc++.h> using namespace std; long long n,i,j,k,dp[2005][2005],a; double b,ma,c,d,sum,mi; int main(){ cin>>n,dp[0][0]=1; while(n--){ cin>>a,ma+=a; for(i=1600;i>=0;i--) for(j=1600;j>=0;j--){ if(i>=a)dp[i][j]=max(dp[i][j],dp[i-a][j]); if(j>=a)dp[i][j]=max(dp[i][j],dp[i][j-a]); } } for(i=ma;i>=0;i--) for(j=ma;j>=0;j--){ //cout<<i<<' '<<j<<' '<<dp[i][j]<<' '<<(double)sqrt((i+j+ma-i-j)/2.0*((i+j+ma-i-j)/2.0-i)*((i+j+ma-i-j)/2.0-j)*((i+j+ma-i-j)/2.0-(ma-i-j)))*100.0<<'\n'; if(dp[i][j]){ b=i,c=j,d=ma-b-c; if(d<=0||b<=0||c<=0)continue; if(b+c>d&&c+d>b&&d+b>c){ sum=(b+c+d)/2.0; sum=(double)sqrt(sum*(sum-b)*(sum-c)*(sum-d)); mi=max(mi,sum); //cout<<ma<<' '; //cout<<i<<' '<<j<<' '<<dp[i][j]<<' '<<(double)sqrt((i+j+ma-i-j)/2.0*((i+j+ma-i-j)/2.0-i)*((i+j+ma-i-j)/2.0-j)*((i+j+ma-i-j)/2.0-(ma-i-j)))*100.0<<'\n'; } } } if(mi==0)cout<<"-1"; else mi*=100.0,a=mi,cout<<a; return 0; }/* 5 1 1 3 3 4 */