1 条题解

  • 0
    @ 2025-11-18 12:27:33
    • 同向双指针
    #include <bits/stdc++.h>
    using namespace std;
    
    using i64 = long long;
    
    i64 solve(vector<int>& a, int m) {
        int n = a.size();
        i64 ans = 0;
    
        for (int l = 0, r = 0; l < n; l++) {
            // a[r] 是最小的数使得 a[r] - a[l] >= m
            r = max(r, l + 1);
            while (r < n && a[r] - a[l] < m) r++;
            ans += n - r;
        }
        return ans;
    }
    
    int main() {	
        ios::sync_with_stdio(false);
        cin.tie(0); cout.tie(0);
        
        int n, m;
        cin >> n >> m;
        vector<int> a(n);
        for (int i = 0; i < n; i++) cin >> a[i];
        cout << solve(a, m) << '\n';
    
        return 0;
    }
    
    • 1

    信息

    ID
    183
    时间
    100ms
    内存
    32MiB
    难度
    5
    标签
    递交数
    92
    已通过
    38
    上传者