- P47's solution
P47's Solution
- 2025-9-5 22:24:09 @
我的锅,数据全随的
放个正解
#include<bits/stdc++.h>
using namespace std;
int n,m;
double a[1048577];
int b[1048577];
double ans;
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%lf",&a[i]);
sort(a+1,a+n+1);
for(int i=3;i<=n;i++)
if(a[i]<a[i-1]+a[i-2])
b[++m]=i;
int mx=-1;
for(int i=1;i<=m;i++)
if(b[m]-b[i]>=3)
mx=i;
if(mx!=-1)
ans=a[b[m]]+a[b[m]-1]+a[b[m]-2]+a[b[mx]]+a[b[mx]-1]+a[b[mx]-2];
if(b[m]>=6)
{
double t1=a[b[m]-5],t2=a[b[m]-4],t3=a[b[m]-3],t4=a[b[m]-2],t5=a[b[m]-1],t6=a[b[m]];
double tt=t1+t2+t3+t4+t5+t6;
if(t1+t2>t3&&t4+t5>t6) ans=tt;
if(t1+t2>t4&&t3+t5>t6) ans=tt;
if(t1+t2>t5&&t3+t4>t6) ans=tt;
if(t1+t2>t6&&t3+t4>t5) ans=tt;
if(t1+t3>t4&&t2+t5>t6) ans=tt;
if(t1+t3>t5&&t2+t4>t6) ans=tt;
if(t1+t3>t6&&t2+t4>t5) ans=tt;
if(t1+t4>t5&&t2+t3>t6) ans=tt;
if(t1+t4>t6&&t2+t3>t5) ans=tt;
if(t1+t5>t6&&t2+t3>t4) ans=tt;
}
if(ans==0||n<6) puts("-1");
else printf("%.3lf\n",ans);
return 0;
}