1 solutions

  • 0
    @ 2024-12-13 20:33:39
    #include<bits/stdc++.h>
    using namespace std;
    #define int long long
    const int maxn=1e6+5;
    int N,C,a[maxn],ans=0;
    int lwbd(int goal,int n){
    	int l=1,r=n;
    	while(l<r){
    		int mid=l+((r-l)>>1);
    		if(a[mid]<goal)l=mid+1;
    		else r=mid;
    	}
    	if(a[l]==goal)return l;
    	else return -1;
    }
    int upbd(int goal,int n){
    	int l=1,r=n;
    	while(l<r){
    		int mid=l+((r-l)>>1);
    		if(a[mid]>goal)r=mid;
    		else l=mid+1;
    	}
    	return l;
    }
    signed main(){
    	scanf("%lld%lld",&N,&C);
    	for(int i=1;i<=N;i++){
    		scanf("%lld",&a[i]);
    	}
    	sort(a+1,a+N+1);
    	for(int i=1;i<=N;i++){
    		int A=a[i];
    		if(A>C){
    			//cout<<lwbd(A-C)<<' '<<upbd(A-C)<<'\n';
    			if(lwbd(A-C,N)==-1)continue;
    			else ans+=(upbd(A-C,N)-lwbd(A-C,N));
    		}
    	}
    	printf("%lld",ans);
    	return 0;
    }
    
    • 1

    Information

    ID
    297
    Time
    1000ms
    Memory
    125MiB
    Difficulty
    8
    Tags
    # Submissions
    40
    Accepted
    6
    Uploaded By