This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
//Suleyman Atayew
#include <algorithm>
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <vector>
#include <bitset>
#include <queue>
#include <cmath>
#include <map>
#include <set>
#define N 500010
#define ff first
#define ss second
#define pb push_back
#define ll long long
#define mod 1000000007
#define pii pair <ll, ll>
#define sz(a) (ll)(a.size())
ll bigmod(ll a, ll b) { if(b==0)return 1; ll ret = bigmod(a, b/2); return ret * ret % mod * (b%2 ? a : 1) % mod; }
using namespace std;
ll n;
pii p[N];
ll T[N*4], L[N*4];
void shift(ll node, ll to)
{
T[to] += L[node];
L[to] += L[node];
}
void upd(ll a, ll b, ll x, ll l, ll r, ll node)
{
if(l > b || r < a) return;
if(l >= a && r <= b) {
T[node] += x;
L[node] += x;
return;
}
shift(node, node*2);
shift(node, node*2+1);
L[node] = 0;
upd(a, b, x, l, (l+r)/2, node*2);
upd(a, b, x, (l+r)/2+1, r, node*2+1);
T[node] = max(T[node*2], T[node*2+1]);
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cin >> n;
for(ll i = 1; i <= n; i++)
cin >> p[i].ff >> p[i].ss;
sort(p+1, p+n+1);
ll ans = 0;
for(ll i = 1; i <= n; i++) {
upd(i, i, p[i].ss, 1, n, 1);
upd(1, i-1, p[i-1].ff - p[i].ff + p[i].ss, 1, n, 1);
ll cur = T[1];
ans = max(ans, cur);
upd(i, i, cur-p[i].ss, 1, n, 1);
}
cout << ans;
}
# | 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... |