func_code_string: #include <bits/stdc++.h>   using namespace std;   long long fa2[200007], fb2[200007];   bool f(int i, int j, long long y) {     long long x1, x2;     if ((y - fb2[i]) % fa2[i] == 0) {       x1 = (y - fb2[i]) / fa2[i];     } else       x1 = (y - fb2[i]) / fa2[i] + 1;     if ((y - fb2[j]) % fa2[j] == 0) {       x2 = (y - fb2[j]) / fa2[j];     } else       x2 = (y - fb2[j]) / fa2[j] + 1;     if (x1 == x2) {       return (x1 * fa2[i] + fb2[i]) <= (x2 * fa2[j] + fb2[j]);     }     return x1 > x2;   }   long long fcheck2(int i1, int i2, int i3) {     return (fa2[i2] - fa2[i1]) * (fb2[i3] - fb2[i2]) >=            (fb2[i2] - fb2[i1]) * (fa2[i3] - fa2[i2]);   }   long long f2(int i, long long x) { return fa2[i] * x + fb2[i]; }   long long ff(int i, long long y) {     long long x1, x2;     if ((y - fb2[i]) % fa2[i] == 0) {       x1 = (y - fb2[i]) / fa2[i];     } else       x1 = (y - fb2[i]) / fa2[i] + 1;     return x1;   }   struct Factory {     long long v, c;     bool operator<(const Factory &p) const {       if (c == p.c) return v > p.v;       return c < p.c;     }   } a[200007];   long long dpt[200007];   long long dpm[200007];   int dep[200007];   int dep2[200007];   int n;   long long s;   void solve() {     int l = 0, l2 = 0, r2 = 1;     fa2[0] = a[0].v;     fb2[0] = 0;     dep2[0] = 0;     for (int i = 0; i < n - 1; i++) {       while (l + 1 < r2 && f(dep2[l], dep2[l + 1], a[i + 1].c)) l++;       dpt[i + 1] = ff(dep2[l], a[i + 1].c);       while (l2 + 1 < r2 &&              f2(dep2[l2], dpt[i + 1]) < f2(dep2[l2 + 1], dpt[i + 1]))         l2++;       dpm[i + 1] = f2(dep2[l2], dpt[i + 1]) - a[i + 1].c;       fa2[i + 1] = a[i + 1].v;       fb2[i + 1] = dpm[i + 1] - a[i + 1].v * dpt[i + 1];       while (l2 + 1 < r2 && fcheck2(dep2[r2 - 2], dep2[r2 - 1], i + 1)) r2--;       dep2[r2++] = i + 1;     }   }   int main() {     scanf( %d%I64d , &n, &s);     for (int i = 0; i < n; i++) scanf( %I64d%I64d , &a[i].v, &a[i].c);     a[n].c = s;     a[n].v = 2000000000;     n++;     sort(a, a + n);     for (int i = 0; i < n; i++) {     }     int cnt = 0;     for (int i = 1; i < n; i++) {       if (a[i].v > a[cnt].v) {         cnt++;         a[cnt] = a[i];       }     }     cnt++;     n = cnt;     dpt[0] = 0;     dpm[0] = 0;     solve();     for (int i = 0; i < n; i++) {       if (a[i].c == s) {         printf( %I64d n , dpt[i]);         break;       }     }     return 0;   }   