需要用二分答案解决
上代码!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#include<bits/stdc++.h>
using namespace std;
int n,a[25005],ans,l,r,c;
int main()
{
cin>>n;
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
sort(a+1,a+1+n);
for(int i=1;i<=n-2;i++)
{
for(int j=i+1;j<=n-1;j++)
{
l=j;
r=n+1;
c=0;
for(;;)
{
c=(l+r)/2;
if(a[i]+a[j]>a[c]) l=c;
else r=c;
if(l+1==r) break;
}
ans+=l-j;
}
}
cout<<ans;
return 0;
}
欢迎参考