2 条题解

  • 1
    @ 2024-11-17 15:53:03
    #include<bits/stdc++.h>
    using namespace std;
    int main(){
    	vector<int>v;
    	int n,m,c=0;
    	cin>>n>>m;
    	for(int i=0;i<n;i++){
    		int x;
    		cin>>x;
    		v.push_back(x);
    	}
    sort(v.begin(),v.end());
    	int l=0,r=0;
    	while(r<n){
    		int sum=v[r]-v[l];
    		if(sum==m){
    			c++;
    			l++;
    		}
    		else if(sum<m){
    			r++;
    		}
    		else{
    			l++;
    		}
    	}
    	cout<<c;
    }
    
    • @ 2024-11-17 15:54:07

      👎

  • 0
    @ 2024-4-18 13:57:46

    直接二分(doge)(其实是懒得处理重复的问题doge)

    #include<bits/stdc++.h>
    #define M 200010
    using namespace std;
    int n,c;
    long long ans=0;
    int num[M];
    int main(){
    	scanf("%d %d",&n,&c);
    	for(int i=0;i<n;++i) scanf("%d",&num[i]);
    	sort(num,num+n);
    	int mid=0;
    	for(int i=n-1;i>=0;--i){
    		int l=0,r=n-1;
    		while(l<=r){
    			mid=(l+r)>>1;
    			if(num[i]-num[mid]>c)l=mid+1;
    			else r=mid-1;
    		}
    		int nmid,ll=0,rr=n-1;
    		while(ll<=rr){
    			nmid=ll+((rr-ll)>>1);
    			if(num[i]-num[nmid]<c)rr=nmid-1;
    			else ll=nmid+1;
    		}
    		ans+=ll-l;
    	}
    	printf("%lld",ans);
    	return 0;
    }
    
    • 1

    信息

    ID
    239
    时间
    1000ms
    内存
    256MiB
    难度
    6
    标签
    递交数
    22
    已通过
    12
    上传者