func_code_string: #include <bits/stdc++.h>   using namespace std;   const long long mod = 1e9 + 7;   const long long maxn = 1e5 + 7;   const long long maxe = 1e6 + 7;   const long long INF = 1e9 + 7;   const double PI = acos(-1);   int dx[4] = {0, 0, 1, -1};   int dy[4] = {-1, 1, 0, 0};   inline void Max(int &a, int b) {     if (b > a) a = b;   }   inline void Min(int &a, int b) {     if (a == -1 || b < a) a = b;   }   int n, t, p, L;   pair<int, int> dp[maxn];   int l[maxn], r[maxn];   void update(int k, pair<int, int> t) {     if (dp[k].first < t.first)       dp[k] = t;     else if (dp[k].first == t.first)       dp[k].second = min(dp[k].second, t.second);   }   int main() {     cin >> L >> n >> p >> t;     for (int i = 1; i <= n; i++) scanf( %d%d , &l[i], &r[i]);     dp[0] = make_pair(0, -INF);     for (int i = 1, j = 0; i <= n; i++) {       if (j) j--;       for (; j < i && dp[j].second + t <= r[i]; j++) {         int pos = max(dp[j].second + t, l[i]);         int num = (r[i] - pos) / p;         update(i, make_pair(num + dp[j].first, pos + num * p));       }       update(i, dp[i - 1]);     }     cout << dp[n].first << endl;     return 0;   }   