#include #include using namespace std; using namespace atcoder; using ll = long long; using ld = long double; using ull = unsigned long long; using vi = vector; using vvi = vector; using vc = vector; using vvc = vector; using vb = vector; using vvb = vector; using vs = vector; using pii = pair; using vpii = vector; using vvpii = vector; using mint = modint998244353; // using mint = modint1000000007; #define endl '\n' #define rep(i, a) for (ll i = 0; i < a; i++) #define f(i, a, b) for (ll i = a; i < b; i++) #define rf(i, a, b) for (ll i = a; i > b; i--) #define all(x) (x).begin(), (x).end() const ll INF = LLONG_MAX / 4; vi dx = {1, 0, -1, 0, 1, 1, -1, -1}; vi dy = {0, 1, 0, -1, 1, -1, 1, -1}; void io_setup() { cin.tie(0); ios::sync_with_stdio(0); cout << fixed << setprecision(16); } int main(void) { io_setup(); int n; cin >> n; vi a(n), b(n); rep(i,n)cin >> a[i] >> b[i]; // vector dp(2, vector(n, {0,0}));//dp[0][i].fisrt 合計ダメージ // dp[0][0] = {0,a[0]}; // dp[1][0] = {b[0],0}; // rep(i,n-1){ // dp[0][i+1] = max(dp[0][i+1]) // } int attack = 0; vi num(n); rf(i,n-1,-1){ if(a[i]*attack <= b[i]){//攻撃する num[i] = 1; attack++; }else{ num[i] =0; } } attack = 0; ll ans = 0; rep(i,n){ if(num[i] == 1)ans += attack + b[i]; else attack += a[i]; } cout << ans << endl; }