怎么办,Subtask4第一个点TLE,80分求助。。。
查看原帖
怎么办,Subtask4第一个点TLE,80分求助。。。
289275
Terraria楼主2020/7/27 08:59
#include<bits/stdc++.h>
#define ll long long
const long long mod= 998244353;
using namespace std;
ll n,a[200009],b[200009],maxn=0,ans=0;
int main(){
	cin>>n;
	memset(b,0,sizeof(b));
	for(int i=1;i<=n;i++){
		cin>>a[i];
		b[a[i]]++;
		maxn=max(maxn,a[i]);
	}
	for(int i=1;i<=maxn;i++){
		if(b[i]>=2){
			int sum=b[i]*(b[i]-1)/2;
			for(int j=1;j<=2*i-1;j++){
				if(j>maxn) break;
				if(j!=i) ans+=sum*b[j]%mod;
				else if(b[j]>2) ans+=b[j]*(b[j]-1)*(b[j]-2)/6%mod;
			}
		}
	}
	cout<<ans%mod<<endl;
	return 0;
}
2020/7/27 08:59
加载中...