3 solutions

  • 2
    @ 2024-2-27 18:43:29

    用long long

    #include<iostream>
    #include<algorithm>
    #include<cmath>
    #define int long long 
    using namespace std;
    signed main()//因为用了define
    {
    	int n,c,sum=0;
    	cin>>n>>c;//输入
    	int a[n];
    	for(int i=0;i<n;i++)
    	{
    		cin>>a[i];//输入
    	}
    	sort(a,a+n);//排序
    	for(int i=0;i<n;i++)
    	{
    		sum+=(upper_bound(a,a+n,a[i]+c)-lower_bound(a,a+n,a[i]+c));//n个相同的配对
    	}
    	cout<<sum;//输出
    	return 0;//完结散花
    }
    
    • 2
      @ 2024-2-25 12:30:33

      本人首次第一个AC

      好多人92分的,其实没那么复杂

      cnt开longlong就AC了👍

      #include <bits/stdc++.h>
      using namespace std;
      int n,c,a[200001];
      int main()
      {
      	cin >> n >> c;
      	for (int i=0;i<n;i++){
      		cin >> a[i];
      	}
      	sort (a,a+n);
      	long long cnt=0;
      	for (int i=0;i<n;i++){
      		int q=a[i]+c;
      		if(binary_search(a+i,a+n,q)){
      			cnt+=(upper_bound(a, a+n,q)-lower_bound(a, a+n,q));
      		}
      	}
      	cout<< cnt;
      	return 0;
      }
      
      • 0
        @ 2024-2-27 13:11:17
        #include<bits/stdc++.h>
        using namespace std;
        int a[200001];
        int main(){
        int n;
        cin>>n;
        long long k;
        cin>>k;
        long long s=0;
        for(int i=0;i<n;i++){
        cin>>a[i];
        }
        sort(a,a+n);
        for(int i=0;i<n;i++){
        int *p=lower_bound(a,a+n,a[i]+k);
        int *q=upper_bound(a,a+n,a[i]+k);
        s+=q-p;
        }
        cout<<s;
        }
        
        
        • 1

        Information

        ID
        996
        Time
        1000ms
        Memory
        125MiB
        Difficulty
        8
        Tags
        # Submissions
        132
        Accepted
        23
        Uploaded By