Submission #234945

#TimeUsernameProblemLanguageResultExecution timeMemory
234945AtalasionArt Exhibition (JOI18_art)C++14
100 / 100
937 ms37552 KiB
//khodaya khodet komak kon
#include <bits/stdc++.h>

#define F first
#define S second
#define pb push_back
#define all(x) x.begin(), x.end()
#pragma GCC optimize ("Ofast")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize ("-O2")


using namespace std;

typedef long long ll;
typedef pair<int, int> pii;
typedef vector<int> vi;

const int N = 500000 + 10;
const ll MOD = 1000000000 + 7;
const ll INF = 1000000000000000010;
const ll LOG = 25;

struct per{
	ll a, b;
};
ll seg[N << 2], lazy[N << 2], n;
per A[N];

void modify(int id, ll x){
	seg[id] += x;
	lazy[id] += x;
}

void shift(int id){
	modify(id << 1, lazy[id]);
	modify(id << 1 | 1, lazy[id]);
	lazy[id] = 0;
}


void add(int id, int lq, int rq, ll x, int l, int r){
	if (rq <= l || r <= lq)return;
	if (lq <= l && r <= rq){
		modify(id, x);
		return;
	}
	int md = (l +r) >> 1;
	shift(id);
	add(id << 1, lq, rq, x, l, md);
	add(id << 1 | 1, lq, rq, x, md, r);
	seg[id] = max(seg[id << 1], seg[id << 1 | 1]);
}

bool cmp(per x, per y){
	return x.a < y.a;
}

int32_t main(){
	ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
	cin >> n;
	for (int i = 1; i <= n; i++){
		cin >> A[i].a >> A[i].b;
	}
	sort(A + 1, A + n + 1, cmp);
	ll ans = 0;
	for (int i = 1; i <= n; i++){
		add(1, i, n + 1, A[i].b, 1, n + 1);
		add(1, i, i + 1, -A[i].a, 1, n + 1);
	}
	for (int i = 1; i <= n; i++){
		add(1, i, n + 1, A[i].a, 1, n + 1);
		ans = max(ans, seg[1]);
		add(1, i, n + 1, -A[i].b, 1, n + 1);
		add(1, i, n + 1, -A[i].a, 1, n + 1);
	}
	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...