首先凭数学直觉,a[i] , a[j] , a[k],必须尽可能大,所以我们先排个序,然后暴力枚举n3,时间快到了就break;能拿90分
ccf用脚造数据
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int mod=1e8;
inline int read(){
int u=0,f=1;char ch=getchar();
while (ch<'0'||ch>'9'){if(ch=='-') f=-1;ch=getchar();}
while (ch>='0'&&ch<='9'){u=u*10+ch-48;ch=getchar();}
return u*f;
}
int n,a[200040],ans=0;
signed main(){
n=read();
for(int i=1;i<=n;i++)a[i]=read();
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(i==j)continue;
if(a[i]+a[j]<ans)continue;
for(int k=1;k<=n;k++){
if((double)clock()/CLOCKS_PER_SEC>=0.98){
printf("%lld",ans);
return 0;
}
if(a[k]<=ans)continue;
if(k==i||k==j)continue;
ans=max(ans,(a[i]+a[j])%a[k]);
}
}
}
printf("%lld",ans);
return 0;
}