#include <bits/stdc++.h>
using namespace std;
#pragma GCC optimize("O3")
#pragma GCC optimize("Ofast")
#pragma optimize("unroll-loops")
#define fast ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0)
#define all(x) x.begin(), x.end()
#define rll(x) x.rbegin(), x.rend()
#define COMP(x) x.erase(unique(all(x)), x.end())
#define MOD 1000000007
#define MOD2 998244353
#define sz(x) (ll)x.size()
typedef __int128_t lll;
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
typedef pair<ll,ll> pll;
typedef pair<ll, pll> PP;
const ll Lnf = 2e18;
ll n;
priority_queue<ll> pq;
ll A[505050], B[505050], D[505050];
int main(){
fast;
cin>>n;
for(int i = 1 ; i <= n ; i++)cin>>A[i]>>B[i], D[i] = A[i]-B[i]+D[i-1];
ll ans = 0;
for(int i = 1 ; i <= n ; i++){
if(D[i]<0)ans -= D[i], D[i]=0;
pq.push(D[i]);
if(pq.top() > D[i]){
ans += pq.top() - D[i];
pq.pop();
pq.push(D[i]);
}
}
if(!sz(pq) or pq.top() <= D[n])return !(cout<<ans);
for(int i = 1 ;; i++){
if(pq.top() == D[n])return !(cout<<ans);
ll x=pq.top(); pq.pop();
ans += i*(x-pq.top());
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |