Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- int arr[3000001] = {};
- int main()
- {
- cin.sync_with_stdio(0);
- cin.tie(0);
- deque<pair<int,int> >increasing;
- deque<pair<int,int> >decreasing;
- int n,k;
- cin >> n >> k;
- for (int i=0;i<n;i++){
- cin >> arr[i];
- }
- int l =0,r=0;
- increasing.push_back({arr[0],0} );
- decreasing.push_back( {arr[0],0} );
- long long int ans=0;
- while (r < n){
- // cout << l << " " << r << " " << increasing[0].first << " " << decreasing[0].first << endl;
- while (increasing.size() > 0 && increasing[0].second < l ){
- increasing.pop_front();
- }
- while (decreasing.size() > 0 && decreasing[0].second < l ){
- decreasing.pop_front();
- }
- if (increasing.front().first - decreasing.front().first <=k){
- ans += r-l+1;
- r++;
- while(increasing.size()>0 && arr[r] > increasing[increasing.size()-1].first){
- // cout << increasing[increasing.size()-1].first << "a" << endl;
- increasing.pop_back();
- // cout << increasing[increasing.size()-1].first << "b" << endl;
- }
- increasing.push_back({arr[r],r});
- while (decreasing.size() > 0 && arr[r] < decreasing[decreasing.size()-1].first){
- decreasing.pop_back();
- }
- decreasing.push_back(make_pair(arr[r],r));
- }
- else{
- l++;
- }
- }
- cout << ans;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement