评测记录
为何本地过了还是0分......
样例1,2,3都过了......
(本地环境:Windows 10,CP Editor 6.10.1和Code::Blocks20.03)
代码
#include<cstdio>
#include<algorithm>
using namespace std;
long long count(int num,int arr[],int n)
{
int l=0,r=n,res=0;
while(l!=r)
{
int mid=(l+r)/2;
if(arr[mid]<num) l=mid;
else if(arr[mid]>num) r=mid;
else
{
res++;
int p1=mid,p2=mid;
while(arr[p1-1]==num)
{
res++;
p1--;
}
while(arr[p2+1]==num)
{
res++;
p2++;
}
break;
}
}
return res;
}
int main()
{
int n,c,now_num=-1;
long long ans;
scanf("%d%d",&n,&c);
int num[n+1];
for(int i=0;i<n;i++)
scanf("%d",&num[i]);
sort(num,num+n);
for(int i=0;i<n;i++)
{
if(now_num==num[i]) continue;
now_num=num[i];
int b=num[i],L=0,R=n;
while(L+1!=R)
{
int mid=(L+R)/2;
if(num[mid]-c>b) R=mid;
else if(num[mid]-c<b) L=mid;
else
{
ans+=(count(b,num,n)*count(num[mid],num,n));
break;
}
}
}
printf("%lld",ans);
return 0;
}