2 条题解

  • 2
    @ 2023-8-7 13:22:25
    #include <cstdio>
    #include <algorithm>
    using namespace std;
    int arr[500005];
    long long ans;
    int main() {
        int n, k, i;
        scanf("%d%d", &n, &k);
        for (i = 0; i < n; i++) scanf("%d", &arr[i]);
        sort(arr, arr + n);
        for (i = 0; i < n - 1; i++)
            ans += n - (lower_bound(arr + i + 1, arr + n, arr[i] + k) - arr);
        printf("%lld", ans);
        return 0;
    }
    

    不要去学那个拉胯榜二,二分才是正解

    • 0
      @ 2023-8-17 14:54:50
      #include<iostream>
      #include<algorithm>
      using namespace std;
      int main(){
          int n,m,a[1000001];
          cin>>n>>m;
          for (int i=0;i<n;i++) cin>>a[i];
          sort(a,a+n);
          long long cnt=0;
          int nowmax=0;
          for (int i=0;i<n-1;i++){
              if (a[n-1]-a[i]<m){break;}
              for (int j=nowmax;j<n;j++){
                  if (a[j]-a[i]>=m){
                      cnt+=n-j;
                      nowmax=j;
                      break;
                  }
              }
          }
          cout<<cnt;
      return 0;
      }
      
      
      • 1

      信息

      ID
      381
      时间
      1000ms
      内存
      256MiB
      难度
      9
      标签
      递交数
      57
      已通过
      6
      上传者