离了个大谱,开O2的话#4RE,没开的话直接ac
  • 板块P1102 A-B 数对
  • 楼主cpulxb
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/4/6 13:23
  • 上次更新2024/4/6 15:11:15
查看原帖
离了个大谱,开O2的话#4RE,没开的话直接ac
1202918
cpulxb楼主2024/4/6 13:23
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
LL sum;
LL bserach1(LL q[],LL n,LL a)
{
   LL l=0,r=n-1;
   LL mid=l+r>>1;
   LL vmin;
   while(l<=r)
   {
       mid=l+r>>1;
       if(q[mid]>=a){r=mid-1;vmin=mid;}
       else l=mid+1;
   }
   if(q[vmin]==a)return vmin;
   else return -1;
}
LL bserach2(LL q[],LL n,LL a)
{
   LL l=0,r=n-1;
   LL mid=l+r>>1;
   LL vmax;
   while(l<=r)
   {
       mid=l+r>>1;
       if(q[mid]<=a){l=mid+1;vmax=mid;}
       else r=mid-1;
   }
   if(q[vmax]==a)return vmax;
   else return -1;
}
int main()
{
    LL n,c;LL q[1000000];
    cin>>n>>c;
    for(LL i=0;i<n;i++)cin>>q[i];
    sort(q,q+n);
    LL res1,res2;
    for(LL i=0;i<n;i++)
    {   
        LL a=q[i]+c;
        res1=bserach1(q,n,a);
        if(res1==-1)continue;
        else
        {
         res2=bserach2(q,n,a);
        }
        sum+=(res2-res1+1);
    }
    cout<<sum;
    return 0;
}
2024/4/6 13:23
加载中...