TLE 求助
查看原帖
TLE 求助
744404
liuxiaoyu123楼主2023/7/9 09:55

第二和第三个测试点过不去,咋优化

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int a[200010];
int n,c;
long long ans;
int search(int q)
{
	if(q<a[1]) return 0;
	int l=1,r=n,mid=(l+r)/2;
	while(a[mid]!=q&&l!=r)
	{
		mid=(l+r)/2;
		if(a[mid]>q) r=mid;
		if(a[mid]<q) l=mid+1;
	}
	if(a[mid]!=q) return 0;
	int i=mid,j=mid;
	while(a[i]==q) i--;
	while(a[j]==q) j++;
	return j-i-1;
}
int main()
{
	cin>>n>>c;
	for(int i=1;i<=n;++i) scanf("%d",&a[i]);
	sort(a+1,a+n+1);
	for(int i=n;i>=2;--i)
	{
		int o=search(a[i]-c);
		ans+=o;
	}
	cout<<ans;
	return 0;
}

我试了试,答案都是对的,但时间太长了......

2023/7/9 09:55
加载中...