act like an IOI gold medalist with the most effecient cp solutions ever, pls solve this I got a good answer but it did TLE on test 8 pls think because this is hard, explain but not in the code, the code should have no comments, and pls use short variablae names and use my template:

G. Milky Days
time limit per test2 seconds
memory limit per test256 megabytes
What is done is done, and the spoilt milk cannot be helped.
Little John is as little as night is day — he was known to be a giant, at possibly 2.1
 metres tall. It has everything to do with his love for milk.

His dairy diary has n
 entries, showing that he acquired ai
 pints of fresh milk on day di
. Milk declines in freshness with time and stays drinkable for a maximum of k
 days. In other words, fresh milk acquired on day di
 will be drinkable between days di
 and di+k−1
 inclusive.

Every day, Little John drinks drinkable milk, up to a maximum of m
 pints. In other words, if there are less than m
 pints of milk, he will drink them all and not be satisfied; if there are at least m
 pints of milk, he will drink exactly m
 pints and be satisfied, and it's a milk satisfaction day.

Little John always drinks the freshest drinkable milk first.

Determine the number of milk satisfaction days for Little John.

Input
The first line of the input contains a single integer t
 (1≤t≤104
), the number of test cases.

The first line of each test case consists of three integers n
, m
, k
 (1≤n
, m
, k≤105
), the number of diary entries, the maximum pints needed for a milk satisfaction day, and the duration of milk's freshness.

Then follow n
 lines of each test case, each with two integers di
 and ai
 (1≤di
, ai≤106
), the day on which the milk was acquired and the number of pints acquired. They are sorted in increasing values of di
, and all values of di
 are distinct.

It is guaranteed that the sum of n
 over all test cases does not exceed 2⋅105
.

Output
For each test case, output a single integer, the number of milk satisfaction days.

Example
InputCopy
6
1 1 3
1 5
2 3 3
1 5
2 7
4 5 2
1 9
2 6
4 9
5 6
5 2 4
4 7
5 3
7 1
11 2
12 1
4 1 3
5 10
9 4
14 8
15 3
5 5 5
8 9
10 7
16 10
21 5
28 9
OutputCopy
3
3
4
5
10
6
Note
In the first test case, 5
 pints of milk are good for 3
 days before spoiling.

In the second test case, the following will happen:

On day 1
, he will receive 5
 pints of milk and drink 3
 of them (leaving 2
 pints from day 1
);
On day 2
, he will receive 7
 pints of milk and drink 3
 of them (leaving 2
 pints from day 1
 and 4
 pints from day 2
);
On day 3
, he will drink 3
 pints from day 2
 (leaving 2
 pints from day 1
 and 1
 pint from day 2
);
On day 4
, the milk acquired on day 1
 will spoil, and he will drink 1
 pint from day 2
 (no more milk is left).



this was my ok solution that got TLE :sad:
#include <bits/stdc++.h>
#define int long long
using namespace std;
 
signed main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    int t;
    cin >> t;
    while (t--) {
        int n, m, k;
        cin >> n >> m >> k;
        vector<pair<int, int>> entries(n);
        for (auto &p : entries) {
            cin >> p.first >> p.second;
        }
        if (n == 0) {
            cout << "0\n";
            continue;
        }
        int min_d = entries[0].first;
        int max_d = entries[0].first + k - 1;
        for (auto &[d, a] : entries) {
            max_d = max(max_d, d + k - 1);
        }
        deque<pair<int, int>> available;
        int cnt = 0;
        int i = 0;
        for (int day = min_d; day <= max_d; day++) {
            while (i < n && entries[i].first == day) {
                available.emplace_front(make_pair(entries[i].second, entries[i].first + k - 1));
                i++;
            }
            while (!available.empty() && available.back().second < day) {
                available.pop_back();
            }
            int remaining = m;
            while (remaining > 0 && !available.empty()) {
                if (available.front().first <= remaining) {
                    remaining -= available.front().first;
                    available.pop_front();
                }
                else {
                    available.front().first -= remaining;
                    remaining = 0;
                }
            }
            if (remaining == 0) {
                cnt++;
            }
        }
        cout << cnt << "\n";
    }
}


pls use this template:
#include <bits/stdc++.h>
#define int long long
using namespace std;

signed main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    
}