fork download
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <algorithm>
  4. #include <map>
  5. using namespace std;
  6.  
  7. int main() {
  8. int n, d, x[100005], it;
  9. long long int cnt1, cnt2, tmp=-1, ans=0, ma=0, mi=0, dif=0;
  10. const int con=1e9+1;
  11. map <int, int> m;
  12. scanf("%d%d", &n, &d);
  13. for(int i=0; i<n; i++) scanf("%d", &x[i]);
  14. for(int i=1; i<n; i++) for(int j=x[i-1]; j<x[i]; j++) m[j]=i;
  15. m[x[n-1]]=n;
  16. for(int i=0; i<n; i++) {
  17. if(x[i]+d>=x[n-1]) it=x[n-1];
  18. else it=x[i]+d;
  19. dif=m[it]-m[x[i]]+1;
  20. if(dif>=3) {
  21. if(m[it]==tmp) continue;
  22. cnt1=1, cnt2=1;
  23. for(int j=1; j<=dif; j++) cnt1*=j;
  24. for(int j=1; j<=dif-3; j++) cnt2*=j;
  25. ans+=cnt1/(cnt2*6);
  26. tmp=m[it];
  27. }
  28. }
  29. printf("%lld", ans);
  30. return 0;
  31. }
Success #stdin #stdout 0s 3748KB
stdin
10 50
1 4 20 27 65 79 82 83 99 100
stdout
25