#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
namespace {
struct Mushroom {
  int a;
  long long b;
  Mushroom(int a_, long long b_): a{a_}, b{b_}
  {
  }
};
long long select(long long& total, vector<Mushroom>& data)
{
  int pos = -1;
  long long res = 0;
  int n = data.size();
  int count = 0;
  long long sum = total;
  for (int i = 0; i < n; ++i) {
    if (data[i].b < 0) {
      ++count;
      sum -= data[i].a;
      continue;
    }
    long long cur = static_cast<long long>(data[i].a) * count + data[i].b + sum;
    if (pos < 0 || cur > res) {
      res = cur;
      pos = i;
    }
  }
  total += data[pos].a;
  data[pos].b = -1;
  return res;
}
}
int main()
{
  iostream::sync_with_stdio(false);
  cin.tie(nullptr);
  int n;
  cin >> n;
  vector<Mushroom> data;
  data.reserve(n);
  for (int i = 0; i < n; ++i) {
    int a;
    long long b;
    cin >> a >> b;
    data.emplace_back(a, b);
  }
  sort(data.begin(), data.end(), [](Mushroom const& lhs, Mushroom const& rhs) { return lhs.a < rhs.a; });
  long long cur = 0;
  long long total = 0;
  for (int k = 1; k <= n; ++k) {
    cur += select(total, data);
    cout << cur << '\n';
  }
  return 0;
}
        | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | #include <iostream> #include <algorithm> #include <vector> using namespace std; namespace { struct Mushroom { int a; long long b; Mushroom(int a_, long long b_): a{a_}, b{b_} { } }; long long select(long long& total, vector<Mushroom>& data) { int pos = -1; long long res = 0; int n = data.size(); int count = 0; long long sum = total; for (int i = 0; i < n; ++i) { if (data[i].b < 0) { ++count; sum -= data[i].a; continue; } long long cur = static_cast<long long>(data[i].a) * count + data[i].b + sum; if (pos < 0 || cur > res) { res = cur; pos = i; } } total += data[pos].a; data[pos].b = -1; return res; } } int main() { iostream::sync_with_stdio(false); cin.tie(nullptr); int n; cin >> n; vector<Mushroom> data; data.reserve(n); for (int i = 0; i < n; ++i) { int a; long long b; cin >> a >> b; data.emplace_back(a, b); } sort(data.begin(), data.end(), [](Mushroom const& lhs, Mushroom const& rhs) { return lhs.a < rhs.a; }); long long cur = 0; long long total = 0; for (int k = 1; k <= n; ++k) { cur += select(total, data); cout << cur << '\n'; } return 0; } | 
 
            
         English
                    English