fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define ms(s,n) memset(s,n,sizeof(s))
  5. #define all(a) a.begin(),a.end()
  6. #define present(t, x) (t.find(x) != t.end())
  7. #define sz(a) int((a).size())
  8. #define FOR(i, a, b) for (int i = (a); i < (b); ++i)
  9. #define FORd(i, a, b) for (int i = (a) - 1; i >= (b); --i)
  10. #define pb push_back
  11. #define pf push_front
  12. #define fi first
  13. #define se second
  14. #define mp make_pair
  15. #define endl "\n"
  16.  
  17.  
  18. typedef long long ll;
  19. typedef unsigned long long ull;
  20. typedef long double ld;
  21. typedef pair<int,int> pi;
  22. typedef vector<int> vi;
  23. typedef vector<pi> vii;
  24.  
  25. const int MOD = (int) 1e9+7;
  26. const int INF = (int) 1e9+2804;
  27. inline ll gcd(ll a,ll b){ll r;while(b){r=a%b;a=b;b=r;}return a;}
  28. inline ll lcm(ll a,ll b){return a/gcd(a,b)*b;}
  29.  
  30.  
  31. int main(){
  32. ios::sync_with_stdio(false);
  33. cin.tie(nullptr);
  34. ll n, k; cin >> n >> k;
  35. ll a[n];
  36. for(ll &x : a) cin >> x;
  37. multiset<ll> ms;
  38. int l = 0;
  39. ll ans = 0;
  40. for(int r = 0; r < n; r++){
  41. ms.insert(a[r]);
  42. while(ms.size() >= 2 && (*ms.rbegin() - *ms.begin() > k)){
  43. auto it = ms.find(a[l]);
  44. ms.erase(it);
  45. ++l;
  46. }
  47. ans += r - l + 1;
  48. }
  49. cout << ans << endl;
  50. return 0;
  51. }
  52.  
  53.  
Success #stdin #stdout 0.03s 7044KB
stdin
Standard input is empty
stdout
2604803138