QFNU-ACM 2021.3.3 Rating
#include<bits/stdc++.h>
#define ll long long
using namespace std;
#define speed_up ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
/*
先排个序,可以找到规律,两个相邻的数之差如果大于前面这个数就不满足,反之满足
刚开始用两层for循环判断然后超时了
用二分,设置左右端点,省去了一些不必要判断的
*/
ll gcd(ll a,ll b)
{
return b?gcd(b,a%b):a;
}
int main()
{
ll n;
cin>>n;
ll a[n];
for(int i=0;i<n;i++)
{
ll t;
cin>>t;
a[i]=abs(t);
}
sort(a,a+n);
ll sum=0;
ll x=0,y=1;
while(y<n)
{
if(a[y]-a[x]<=a[x])
{
sum+=y-x;
y++;
}
else x++;
}
/*
for(int i=0;i<n;i++)
{
for(int j=i+1;j<n;j++)
{
if(a[j]-a[i]>a[i])break;
else sum++;
}
}*/
cout<<sum<<endl;
}

浙公网安备 33010602011771号