Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
147670 李树强 三角形 C++ 通过 100 15 MS 1300 KB 942 2024-05-18 17:23:19

Tests(10/10):


#include<iostream> #include<cmath> using namespace std; const int N = 50, M = 810; int n, a[N], cnt; double ans = -1; bool f[M][M]; bool is_3(int a1, int a2, int a3){ return a1 + a2 > a3 && a1 + a3 > a2 && a2 + a3 > a1; } double qs(double a1, double a2, double a3){ double p = (a1 + a2 + a3) / 2; return sqrt(p * (p - a1) * (p - a2) * (p - a3)); } int main(){ cin >> n; f[0][0] = 1; for(int i = 0; i < n; i++) {cin >> a[i]; cnt += a[i];} for(int i = 0; i < n; i++){ for(int j = cnt/2+1; j >= 0; j--){ for(int k = cnt/2+1; k >= 0; k--){ if(f[j][k] && j + a[i] < M) f[j + a[i]][k] = true; if(f[j][k] && k + a[i] < M) f[j][k + a[i]] = true; } } } for(int i = 0; i < M; i++){ for(int j = 0; j < M; j++){ if(f[i][j] && is_3(i, j, cnt-i-j)){ ans = max(ans, qs(i, j, cnt-i-j)); } } } if(ans == -1) cout << -1; else cout << (long long)(ans*100); return 0; }


测评信息: