제출 #1144680

#제출 시각아이디문제언어결과실행 시간메모리
1144680zhasynArt Exhibition (JOI18_art)C++20
100 / 100
282 ms47356 KiB
#include <bits/stdc++.h> #define pb push_back #define pf push_front using namespace std; #define F first #define S second typedef long long ll; #define pii pair <int, int> #define pll pair <ll, ll> typedef long double ld; const ll N = 5 * 1e5 + 100, M = 4096 + 10, len = 21, inf = 1e18; const ll mod = 1e9 + 7; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); ll um(ll a, ll b){ return (1LL * a * b) % mod; } ll subr(ll a, ll b){ return ((1LL * a - b) % mod + mod) % mod; } pll cur[N]; int main() { ios::sync_with_stdio(false); cin.tie(NULL); ll n, ans = 0, sum = 0; cin >> n; vector <pll> vec; for(ll i = 0, a, b; i < n; i++){ cin >> a >> b; vec.pb({a, b}); } sort(vec.begin(), vec.end()); set <pll> st; for(ll i = 0; i < n; i++){ sum += vec[i].S; //cout << vec[i].F << " "<< vec[i].S << " "<< sum - (vec[i].F - vec[0].F) << endl; cur[i] = {sum - (vec[i].F - vec[0].F), i}; st.insert(cur[i]); } sum = 0; for(ll i = 0; i < n; i++){ pll res = *st.rbegin(); ans = max(ans, res.F - sum + (vec[i].F-vec[0].F)); st.erase(cur[i]); sum += vec[i].S; } cout << ans; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...