统计a[i]-i的数量,利用组合数计算谐距下标对数

#include <iostream>
#include<vector>
#include<unordered_map>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int n;
    cin>>n;
    vector<int>a(n);
    unordered_map<int,int>cnt;
    for(int i=0;i<n;i++){
        cin>>a[i];
        cnt[a[i]-i]++;
    }
    long long res=0;
    for(const auto&p:cnt){
        int c=p.second;
        res+=(long long)c*(c-1)/2;
    }
    cout<<res<<endl;
    return 0;
}