代码:
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=2e5+10,mod=998244353;
int h[N],n,a[N];
int check(int x)
{
int L=0,R=n;
while(L<R)
{
int mid=(L+R+1)>>1;
if(a[mid]<x) L=mid;
else R=mid-1;
}
return L;
}
ll ans;
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d",&a[i]),h[a[i]]++;
sort(a+1,a+n+1);
for(int i=1;i<=n;i++)
{
if(h[a[i]]<=1) continue;
int tmp=h[a[i]],cnt=check(a[i]*2);h[a[i]]=0;
if(tmp==cnt){ans=(ans+(ll)(cnt)*(cnt-1)*(cnt-2)/6ll%mod)%mod;continue;}
ans=(ans+((ll)tmp*(ll)(tmp-1)/2ll*(ll)(cnt-2)%mod))%mod;
}
printf("%lld",ans%mod);
return 0;
}
一直搞不对,或者大佬说一下正解思路也行啊