简简单单的暴力(题解一)。。tle了一个点,求大佬指导优化
查看原帖
简简单单的暴力(题解一)。。tle了一个点,求大佬指导优化
293127
doitagain楼主2020/8/7 20:16
#include <iostream>
using namespace std;
long long  f[200005];
int main()
{
 
	long long  n,m=0,ans=0;
	cin>>n;
	for (int i=1;i<=n;i++)
	{
		int a;
		cin>>a;
		f[a]++;
		m<a? m=a:m=m;
	}
	
	for (int i=1;i<=m;i++)
	{ 
	int k=0;
		if (f[i]==0) continue;
		if (f[i]==2)
		{
				for (int j=1;j<=m && j<i*2 ;j++)
			if (j!=i)
			k+=f[j];
			ans+=k;
		}
		if (f[i]>=3)
		{
			for (int j=1;j<=m && j<i*2 ;j++)
			if (j!=i)
		  k+=f[j];
	//	  if (k==0) k==1;
		  ans+=((f[i]*(f[i]-1)*(f[i]-2))/6)+(f[i]*(f[i]-1)/2)*k;
		}
	ans=ans%998244353;	
	}
	cout<<ans%998244353;
	return 0;
}
2020/8/7 20:16
加载中...