Submission #1255012

#TimeUsernameProblemLanguageResultExecution timeMemory
1255012magic_tripPotatoes and fertilizers (LMIO19_bulves)C++20
0 / 100
0 ms580 KiB
#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++){
//        cout<<D[i]<<endl;
        pq.push(D[i]);
        if(pq.top() > D[i]){
            ans += pq.top() - D[i];
            pq.pop();
            pq.push(D[i]);
        }
        if(pq.top()<0){ ans -= pq.top(); while(sz(pq))pq.pop(); }
    }
    if(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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...