本地全过,但是0分(?)
  • 板块P1102 A-B 数对
  • 楼主Himekawa
  • 当前回复2
  • 已保存回复2
  • 发布时间2022/4/17 11:54
  • 上次更新2023/10/28 03:30:12
查看原帖
本地全过,但是0分(?)
519173
Himekawa楼主2022/4/17 11:54

评测记录
为何本地过了还是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;
}
2022/4/17 11:54
加载中...