fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define FOR(i, a, b) for (int i = (a), _b = (b); i <= _b; i++)
  5. #define FORD(i, a, b) for (int i = (a), _b = (b); i >= _b; i--)
  6.  
  7. using ll = long long;
  8.  
  9. template<typename X, typename Y>
  10. bool chmax(X& a, Y b) { return (a < b) ? a = b, 1 : 0; }
  11. template<typename X, typename Y>
  12. bool chmin(X& a, Y b) { return (a > b) ? a = b, 1 : 0; }
  13.  
  14.  
  15. const int MAXN = 1e5 + 5;
  16.  
  17. int N, A[MAXN], B[MAXN];
  18. ll X, Y, Z;
  19.  
  20. namespace Subtask1 {
  21. bool check() {
  22. return N == 2;
  23. }
  24. void solve() {
  25.  
  26. }
  27. }
  28.  
  29. namespace Subtask2 {
  30. bool check() {
  31. return N <= 100;
  32. }
  33. void solve() {
  34.  
  35. }
  36. }
  37.  
  38. namespace Fulltask {
  39. void solve() {
  40. ll ans = 0;
  41. priority_queue<ll> pq, _pq;
  42. FOR(i, 1, N) {
  43. int M = min(A[i], B[i]);
  44. A[i] -= M; B[i] -= M;
  45. ans += (ll)A[i] * Y + (ll)B[i] * X;
  46. ll C = (ll)i * Z;
  47. while (A[i]--) {
  48. if (!_pq.empty() && _pq.top() - C > 0) {
  49. ll K = _pq.top(); _pq.pop();
  50. ans -= (K - C);
  51. pq.push(X + Y + 2LL * C - K);
  52. } else pq.push(X + Y + C);
  53. }
  54. while (B[i]--) {
  55. if (!pq.empty() && pq.top() - C > 0) {
  56. ll K = pq.top(); pq.pop();
  57. ans -= (K - C);
  58. _pq.push(X + Y + 2LL * C - K);
  59. } else _pq.push(X + Y + C);
  60. }
  61. }
  62. cout << ans << "\n";
  63. }
  64. }
  65.  
  66. void solve() {
  67. cin >> N >> X >> Y >> Z;
  68. FOR(i, 1, N) cin >> A[i] >> B[i];
  69. Fulltask::solve();
  70. }
  71.  
  72. int main() {
  73. ios_base::sync_with_stdio(false); cin.tie(NULL);
  74.  
  75. // freopen("GARDEN.INP", "r", stdin);
  76. // freopen("GARDEN.OUT", "w", stdout);
  77.  
  78. int tests = 1; // cin >> tests;
  79. while (tests--) solve();
  80.  
  81. #ifdef LOCAL
  82. cerr << "\nTime elapsed: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n";
  83. #endif
  84. return 0;
  85. }
Success #stdin #stdout 0.01s 5320KB
stdin
4 100 200 1
1 4
2 3
3 2
4 0
stdout
210