func_code_string: #include <bits/stdc++.h>   using namespace std;   typedef long long arr64[200020];   int n, tn, tS, qS = 1;   pair<int, long long> pr[200020];   arr64 pX, pY, K, B;   int main() {     long long s;     scanf( %d%I64d , &n, &s);     for (int i = 1; i <= n; i++) scanf( %d%d , &pr[i].first, &pr[i].second);     sort(pr + 1, pr + n + 1);     pr[++n] = make_pair((int)1e9, s);     for (int i = 1; i <= n; i++)       if (i == 1 || pr[i].first > pr[i - 1].first) {         while (tn > 0 && pr[i].second <= pr[tn].second) tn--;         pr[++tn] = pr[i];       }     K[tS = 1] = pr[1].first;     for (int i = 2; i <= tn; i++) {       qS = min(qS, tS);       while (qS < tS &&              (((pr[i].second - B[qS + 1]) / (K[qS + 1]) +                ((pr[i].second - B[qS + 1]) % (K[qS + 1]) != 0)) <                   ((pr[i].second - B[qS]) / (K[qS]) +                    ((pr[i].second - B[qS]) % (K[qS]) != 0)) ||               ((pr[i].second - B[qS + 1]) / (K[qS + 1]) +                ((pr[i].second - B[qS + 1]) % (K[qS + 1]) != 0)) ==                       ((pr[i].second - B[qS]) / (K[qS]) +                        ((pr[i].second - B[qS]) % (K[qS]) != 0)) &&                   (K[qS + 1] * ((pr[i].second - B[qS + 1]) / (K[qS + 1]) +                                 ((pr[i].second - B[qS + 1]) % (K[qS + 1]) != 0)) +                    B[qS + 1] - pr[i].second) >=                       (K[qS] * ((pr[i].second - B[qS]) / (K[qS]) +                                 ((pr[i].second - B[qS]) % (K[qS]) != 0)) +                        B[qS] - pr[i].second)))         qS++;       long long cX = ((pr[i].second - B[qS]) / (K[qS]) +                       ((pr[i].second - B[qS]) % (K[qS]) != 0)),                 cK = pr[i].first;       long long cY = (K[qS] * ((pr[i].second - B[qS]) / (K[qS]) +                                ((pr[i].second - B[qS]) % (K[qS]) != 0)) +                       B[qS] - pr[i].second),                 cB = cY - cK * cX;       if (i == tn) printf( %I64d n , cX);       while (tS > 1 && cK * pX[tS - 1] + cB >= pY[tS - 1]) tS--;       K[++tS] = cK, B[tS] = cB;       pX[tS - 1] = (((B[tS - 1] - B[tS])) / ((K[tS] - K[tS - 1])) +                     (((B[tS - 1] - B[tS])) % ((K[tS] - K[tS - 1])) != 0));       pY[tS - 1] = cK * pX[tS - 1] + cB;     }   }   