作者:
于于
,
2022-01-15 00:55:06
,
所有人可见
,
阅读 26
#include<iostream>
#include<algorithm>
using namespace std;
const int N=1e3+10;
int a[N];
int n,res;
int ef(int x)
{
int l=1,r=n;
while(l<r)
{
int mid=l+r>>1;
if(a[mid]>=x)r=mid;
else l=mid+1;
}
return l;
}
int ed(int x)
{
int l=1,r=n;
while(l<r)
{
int mid=l+r+1>>1;
if(a[mid]<=x)l=mid;
else r=mid-1;
}
return l;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
sort(a+1,a+n+1);
for(int i=1;i<=n;i++)
{
if(i==n)continue;
for(int j=i-1;j>=1;j--)
{
int x=a[i],y=a[j];
if(2*x-y>a[n])continue;
int a=ed(3*x-2*y),b=ef(2*x-y);
if(b>a)continue;
res+=(a-b+1);
}
}
cout<<res;
}
//这里填你的代码^^
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~