Submission #915062

# Submission time Handle Problem Language Result Execution time Memory
915062 2024-01-23T09:23:48 Z penguin133 Divide and conquer (IZhO14_divide) C++17
100 / 100
81 ms 33784 KB
#include <bits/stdc++.h>
using namespace std;

#define int long long
#define pi pair<int, int>
#define pii pair<int, pi>
#define fi first
#define se second
#ifdef _WIN32
#define getchar_unlocked _getchar_nolock
#endif
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());

struct node{
	int s, e, m, val;
	node *l, *r;
	node(int _s, int _e){
		s = _s, e = _e, m = (s + e) >> 1;
		if(s != e)l = new node(s, m), r = new node(m+1, e);
		val = -1e18;
	}
	
	void upd(int p, int v){
		if(s == e)val = max(val, v);
		else{
			if(p <= m)l->upd(p, v);
			else r->upd(p, v);
			val = max(l->val, r->val);
		}
	}
	
	int qry(int a, int b){
		if(a == s && b == e)return val;
		if(b <= m)return l->qry(a ,b);
		if(a > m)return r->qry(a, b);
		return max(l->qry(a, m), r->qry(m+1, b));
	}
}*root;

int n, A[100005], B[100005], C[100005], P[100005], P2[100005];

void solve(){
	cin >> n;
	for(int i=1;i<=n;i++)cin >> A[i] >> C[i] >> B[i];
	vector <int> v;
	for(int i=1;i<=n;i++){
		P[i] = P[i-1] + B[i];
		v.push_back(P[i - 1] - A[i]);
		v.push_back(P[i] - A[i]);
		P2[i] = P2[i-1] + C[i];
	}
	sort(v.begin(), v.end());
	v.erase(unique(v.begin(), v.end()), v.end());
	root = new node(0, (int)v.size());
	int ans = 0;
	for(int i=1;i<=n;i++){
		int y = lower_bound(v.begin(), v.end(), P[i - 1] - A[i]) - v.begin() + 1;
		root->upd(y, -P2[i - 1]);
		int x = lower_bound(v.begin(), v.end(), P[i] - A[i]) - v.begin() + 1;
		ans = max(ans, root->qry(0, x) + P2[i]);
	}
	cout << ans << '\n';
}

main(){
	ios::sync_with_stdio(0);cin.tie(0);
	int tc = 1;
	//cin >> tc;
	for(int tc1=1;tc1<=tc;tc1++){
		// cout << "Case #" << tc1 << ": ";
		solve();
	}
}

Compilation message

divide.cpp:65:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   65 | main(){
      | ^~~~
# Verdict Execution time Memory Grader output
1 Correct 1 ms 2392 KB Output is correct
2 Correct 1 ms 2396 KB Output is correct
3 Correct 1 ms 2396 KB Output is correct
4 Correct 1 ms 2392 KB Output is correct
5 Correct 1 ms 2392 KB Output is correct
6 Correct 1 ms 2396 KB Output is correct
7 Correct 1 ms 2396 KB Output is correct
8 Correct 1 ms 2396 KB Output is correct
9 Correct 1 ms 2396 KB Output is correct
10 Correct 1 ms 2396 KB Output is correct
11 Correct 1 ms 2396 KB Output is correct
12 Correct 1 ms 2396 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 2392 KB Output is correct
2 Correct 1 ms 2396 KB Output is correct
3 Correct 1 ms 2396 KB Output is correct
4 Correct 1 ms 2392 KB Output is correct
5 Correct 1 ms 2392 KB Output is correct
6 Correct 1 ms 2396 KB Output is correct
7 Correct 1 ms 2396 KB Output is correct
8 Correct 1 ms 2396 KB Output is correct
9 Correct 1 ms 2396 KB Output is correct
10 Correct 1 ms 2396 KB Output is correct
11 Correct 1 ms 2396 KB Output is correct
12 Correct 1 ms 2396 KB Output is correct
13 Correct 1 ms 2396 KB Output is correct
14 Correct 1 ms 2396 KB Output is correct
15 Correct 1 ms 2440 KB Output is correct
16 Correct 1 ms 2652 KB Output is correct
17 Correct 1 ms 2652 KB Output is correct
18 Correct 1 ms 2688 KB Output is correct
19 Correct 1 ms 2652 KB Output is correct
20 Correct 1 ms 2652 KB Output is correct
21 Correct 2 ms 2908 KB Output is correct
22 Correct 2 ms 2908 KB Output is correct
23 Correct 4 ms 3932 KB Output is correct
24 Correct 4 ms 3932 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 2392 KB Output is correct
2 Correct 1 ms 2396 KB Output is correct
3 Correct 1 ms 2396 KB Output is correct
4 Correct 1 ms 2392 KB Output is correct
5 Correct 1 ms 2392 KB Output is correct
6 Correct 1 ms 2396 KB Output is correct
7 Correct 1 ms 2396 KB Output is correct
8 Correct 1 ms 2396 KB Output is correct
9 Correct 1 ms 2396 KB Output is correct
10 Correct 1 ms 2396 KB Output is correct
11 Correct 1 ms 2396 KB Output is correct
12 Correct 1 ms 2396 KB Output is correct
13 Correct 1 ms 2396 KB Output is correct
14 Correct 1 ms 2396 KB Output is correct
15 Correct 1 ms 2440 KB Output is correct
16 Correct 1 ms 2652 KB Output is correct
17 Correct 1 ms 2652 KB Output is correct
18 Correct 1 ms 2688 KB Output is correct
19 Correct 1 ms 2652 KB Output is correct
20 Correct 1 ms 2652 KB Output is correct
21 Correct 2 ms 2908 KB Output is correct
22 Correct 2 ms 2908 KB Output is correct
23 Correct 4 ms 3932 KB Output is correct
24 Correct 4 ms 3932 KB Output is correct
25 Correct 3 ms 3928 KB Output is correct
26 Correct 6 ms 5340 KB Output is correct
27 Correct 7 ms 5600 KB Output is correct
28 Correct 32 ms 17624 KB Output is correct
29 Correct 34 ms 17972 KB Output is correct
30 Correct 69 ms 33784 KB Output is correct
31 Correct 65 ms 32560 KB Output is correct
32 Correct 66 ms 32716 KB Output is correct
33 Correct 66 ms 32364 KB Output is correct
34 Correct 76 ms 31692 KB Output is correct
35 Correct 73 ms 32972 KB Output is correct
36 Correct 81 ms 33224 KB Output is correct