提交时间:2024-05-20 14:00:23

运行 ID: 147933

# include <bits/stdc++.h> using namespace std ; int dp [1005] [1005] , l [1005] ; int area ( int a , int b , int c ) { double p = a + b + c ; p /= 2 ; double s = p * ( p - a ) * ( p - b ) * ( p - c ) ; s = sqrt ( s ) ; return int ( s * 100 ) ; } int main ( ) { int n ; while ( cin >> n ) { int sum = 0 , ans = -1 ; for ( int i = 1 ; i <= n ; i ++ ) { cin >> l [i] ; sum += l [i] ; } memset ( dp , 0 , sizeof ( dp ) ) ; dp [0] [0] = 1 ; int longest = sum / 2 - ( sum / 2 == 0 ) ; for ( int k = 1 ; k <= n ; k ++ ) { for ( int i = longest ; i >= 0 ; i -- ) { for ( int j = i ; j >= 0 ; j -- ) { if ( dp [i] [j] ) { dp [i] [j + l [k]] = dp [i + l [k]] [j] = 1 ; } } } } for ( int i = longest ; i >= 1 ; i -- ) { for ( int j = i ; j >= 1 ; j -- ) { if ( dp [i] [j] ) { ans = max ( ans , area ( i , j , sum - i - j ) ) ; } } } cout << ans << endl ; } return 0 ; }