再次抱灵求助
查看原帖
再次抱灵求助
264548
Tangent233楼主2021/1/24 08:39
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int maxn=200010;
const int mod=998244353;
int tong[maxn],qzh[maxn];
int C3(int n)
{
    int c=n*((n-1)/2)*((n-2)/3);
    return c%mod;
}
int C2(int n)
{
    int c=n*(n-1)/2;
    return c%mod;
}
signed main()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        int a;
        cin>>a;
        tong[a]++;
    }
    int nowqzh=0;
    for(int i=1;i<=maxn;i++)
    {
        nowqzh+=tong[i];
        qzh[i]=nowqzh;
    }
    long long ans=0;
    for(int i=1;i<=maxn;i++)
    {
        if(tong[i]>=2)
        {
            int u=qzh[min(maxn,i*2-1)]-tong[i];
            u%=mod;
            ans=(ans+(C2(tong[i])*u))%mod;
        }
        if(tong[i]>=3)
            ans=(ans+C3(tong[i]))%mod;
    }
    cout<<ans;
    return 0;
}

2021/1/24 08:39
加载中...