1 条题解

  • 0
    @ 2023-3-13 11:51:14

    C :

    #include <stdio.h>
    #include <stdlib.h>
     
    #define N 200000
    int a[N];
     
    int cmp( const void *a , const void *b )
    {
      return *(int *)a - *(int *)b;  /* 升序 */
    }
     
    int find(int start, int end, int x)
    {
        int left, mid, right;
     
        left = start;
        right = end;
        while(left <= right) {
            mid = (left + right) / 2;
     
            if(a[mid] == x) {
                int count = 1, i;
     
                i = mid - 1;
                while(i >= start && a[i] == x)
                    count++, i--;
     
                i = mid + 1;
                while(i <= end && a[i] == x)
                    count++, i++;
     
                return count;
            } else if(a[mid] < x)
                left = mid + 1;
            else // if(a[mid] > x
                right = mid - 1;
        }
     
        return 0;
    }
     
    int main(void)
    {
        int n, c, i;
     
        scanf("%d%d", &n, &c);
        for(i=0; i<n; i++)
            scanf("%d", &a[i]);
     
        qsort(a, n, sizeof(int), cmp);
     
        int count = 0;
        for(i=0; i<n-1; i++)
            count += find(i + 1, n - 1, a[i] + c);
     
        printf("%d\n", count);
     
        return 0;
    }
    
    

    C++ :

    #include<bits/stdc++.h>
    
    using namespace std;
    int main()
    {int n,c,a[1000],t=0;
    cin>>n>>c;
    for(int i=0;i<n;i++)
    {cin>>a[i];
    	
    }for(int i=0;i<n;i++)
    {
    	for(int j=0;j<n;j++)
    	{if(a[i]-a[j]==c)t=t+1;
    		
    	}
    }cout<<t;
    
        return 0;
    }			 
    
    • 1

    信息

    ID
    1823
    时间
    1000ms
    内存
    16MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者