92分的代码,求调qwq
  • 板块P1102 A-B 数对
  • 楼主_Ash_
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/11/12 15:10
  • 上次更新2023/11/12 16:38:28
查看原帖
92分的代码,求调qwq
1029411
_Ash_楼主2023/11/12 15:10
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 10;
int q[N];
int res;
int main()
{
    int n,m;
    cin>>n>>m;
    for(int i=0;i<n;i++) scanf("%lld",&q[i]);
    sort(q,q+n);
    for(int i=0;i<n;i++)
    {
        int x=q[i];
        int l=0,r=n-1;
        if(q[i]>m)
        {
            while(l<r)
            {
                int mid=(l+r)/2;
                if(q[mid]>=x-m) r=mid;
                else l=mid+1;
            }
            int t=l;
            l=0,r=n-1;
            while(l<r)
            {
                int mid=(l+r+1)/2;
                if(q[mid]<=x-m) l=mid;
                else r=mid-1;
            }
            if(x-q[t]==m&&x-q[l]==m) 
            {
                res+=l-t+ 1;
            }
        }
    }
    cout<<res;
    return 0;
}
2023/11/12 15:10
加载中...