 # Help required in CF EDU two pointers topic

Question
I am solving the above problem on codeforces. I am unable to figure out my mistake (Current solution verdict is WA) . Basically I have used 2 pointer approach and I will remove elements from left if difference is greater than K, else I will continue to add it from the right side.

``````#include<bits/stdc++.h>
#define FAST ios_base::sync_with_stdio(false);cin.tie();cout.tie();
#define deb(x) cout<<#x<<":= "<<x<<"\n";
#define MOD 1000000007

using namespace std;
typedef long long ll;
typedef long double ld;

void solve()
{
int n; ll k;
cin >> n >> k;
std::vector<int> a(n);
for (int i = 0; i < n; i++) cin >> a[i];
int l = 0, r = 0;
map<int, int> mp;
ll cnt = 0;
while (r < n)
{
mp[a[r]]++;
int min = (*mp.begin()).first, max = (*mp.rbegin()).first;
while (max - min > k)
{
if (mp[a[l]] > 1) mp[a[l]]--;
else mp.erase(a[l]);
min = (*mp.begin()).first;
max = (*mp.rbegin()).first;
l++;
}
cnt += (r - l + 1);
r++;
}
cout << cnt << "\n";
}

int main()
{
FAST
#ifndef ONLINE_JUDGE
#endif
int t = 1;  //cin >> t;
while (t--)
{
solve();
}
return 0;
}
``````