제출 #1088477

#제출 시각아이디문제언어결과실행 시간메모리
1088477LucasLeArt Exhibition (JOI18_art)C++17
100 / 100
205 ms28756 KiB
#include <bits/stdc++.h>


#define                int  long long
#define              moony  long long
#define                pii  pair<int, int>
#define                 fi  first
#define                 se  second
#define                 ld  long double
#define                 vi  vector<int>
#define                vii  vector<vector<int>>
#define             all(v)  (v).begin(), (v).end()
#define       rep(i, a, b)  for (int i = (a), _b = (b); i <= _b; ++i)
#define       per(i, b, a)  for (int i = (b), _a = (a); i >= _a; --i)

using namespace std;

const int MOD = 1e9 + 7;

int add(int a, int b) {
  a += b;
  if (a >= MOD) a -= MOD;
  return a;
}

int mul(int a, int b) {
  (a *= b) %= MOD;
  return a;
}

int ceil(int x, int y) {
  return (x + y - 1) / y;
}

int bin_pow(int x, int y) {
  int res=1;
  while(y){if(y&1)res=res*x%MOD;x=x*x%MOD;y>>=1;}
  return res;
}

const int INF = 1e17;
const int maxn = 1e6 + 5;

int pref[maxn + 5];

int calc(int l, int r) {
  if (l > r) return 0;
  if (!l) return pref[r];
  return pref[r] - pref[l - 1];
}

void solve(int tc) {
  int n; cin >> n;
  vector<pair<int, int>> a(n);
  for (int i = 0; i < n; ++i) cin >> a[i].first >> a[i].second;
  sort(a.begin(), a.end());
  for (int i = 0; i < n; ++i) {
    if (!i) pref[0] = a[0].second;
    else pref[i] = pref[i - 1] + a[i].second;
  }
  vector<int> orz(n);
  for (int i = 0; i < n; ++i)
    orz[i] = a[i].first + calc(i, n - 1);
  int sum = -INF, ans = 0;
  for (int i = 0; i < n; ++i) {
    sum = max(sum, orz[i]);
    ans = max(ans, sum - calc(i + 1, n - 1) - a[i].first);
  }
  cout << ans << '\n';
}

signed main() {

  ios_base::sync_with_stdio(false);
  cin.tie(0); cout.tie(0);

  int tc = 1;
  //cin >> tc;

  for (int i = 1; i <= tc; ++i) {
    solve(i);
  }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...