84求助,为啥点2和3WA?
查看原帖
84求助,为啥点2和3WA?
565905
czj18809216006楼主2021/12/27 20:07
#include<iostream>
#include<cstdio>
#include<iomanip>
#include<cmath>
#include<algorithm>
using namespace std;
int shu[10000001];
int n,c;
int high,low,mid,sum1=0;
void search(int x)
{
	for(int i=1;i<=5000;i++)
	{
		if(shu[x+i]!=shu[x])
		{
			sum1+=i-1;
			break;
		}
	}
	for(int i=1;i<=5000;i++)
	{
		if(shu[x-i]!=shu[x])
		{
			sum1+=i-1;
			break;
		}
	}
	return;
}
int main()
{
	cin>>n>>c;
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&shu[i]);
	}
	sort(shu+1,shu+n+1);
	for(int i=n;shu[i]>c;i--)
	{
		high=n,low=1;
		while(low<=high)
		{
			mid=(low+high)/2;
			if(shu[mid]==shu[i]-c)
			{
				sum1+=1;
				search(mid);
				break;
			}
			else
			{
				if(shu[mid]>shu[i]-c)
				{
					high=mid-1;
				}
				if(shu[mid]<shu[i]-c)
				{
					low=mid+1;
				}
			}
		}
	}
	cout<<sum1<<endl;
	return 0;
} 
2021/12/27 20:07
加载中...