Submission #498492

# Submission time Handle Problem Language Result Execution time Memory
498492 2021-12-25T10:11:57 Z tmn2005 Divide and conquer (IZhO14_divide) C++17
100 / 100
160 ms 20236 KB
#include<bits/stdc++.h>
using namespace std;

typedef long long ll;

#define ar array
#define fr first
#define sc second

#define vec vector
#define ret return

#define ins insert
#define mk make_pair
#define pb push_back
#define pf push_front
#define pob pop_back
#define pof pop_back

#define int long long

#define pii pair<int,int>

#define all(s) s.begin(), s.end()
#define allr(s) s.rbegin(), s.rend()

#define NeedForSpeed ios::sync_with_stdio(0),cin.tie(0);
#define ordered_set tree<int, null_type,less<int>, rb_tree_tag,tree_order_statistics_node_update>
const int N=1e6+12,INF=1e9,mod = 1e9+7;
bool iswowel(char n){ n = toupper(n); if(n == 'A' || n == 'O' || n == 'U' || n == 'E' || n == 'I') return true; else return false;}
int n,m,k,x,y,l,r,o,ans,res,ok,mx,mn = INF;
int a[N],b[N],c[N],t[N*4];
map<int,int>dp,pr;

int get(int v,int l,int r,int x){
	if(l == r)
		ret l;
	int m = l + r >> 1;
	
	if(x >= t[v*2])
		ret get(v*2,l,m,x);
	else
		ret get(v*2+1,m+1,r,x);
}
void build(int v,int l,int r,int i,int x){
	if(l == r)
		t[v] = x;
	else{
		int m = l + r >> 1;
		if(i <= m)
			build(v*2,l,m,i,x);
		else
			build(v*2+1,m+1,r,i,x);
		t[v] = min(t[v*2], t[v*2+1]);
	}
}
main(){
	NeedForSpeed
    cin>>n;
    for(int i=1; i<=n; i++){
    	cin>>a[i]>>b[i]>>c[i];
    	
		dp[i] = dp[i-1] + b[i];
		pr[i] = pr[i-1] + c[i];
		build(1,1,n, i,pr[i-1] - a[i]);
	}
	for(int i=1; i<=n; i++){
		int j = get(1,1,n,pr[i] - a[i]);
		//cout<<j<<" "<<i<<endl;
		res = max(res, dp[i] - dp[j-1]);
	}
	cout<<res;
	
	
	
	
	
	
	
	
	
	
	
	
	
	return 0;
}



Compilation message

divide.cpp: In function 'long long int get(long long int, long long int, long long int, long long int)':
divide.cpp:38:12: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   38 |  int m = l + r >> 1;
      |          ~~^~~
divide.cpp: In function 'void build(long long int, long long int, long long int, long long int, long long int)':
divide.cpp:49:13: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   49 |   int m = l + r >> 1;
      |           ~~^~~
divide.cpp: At global scope:
divide.cpp:57:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   57 | main(){
      | ^~~~
# Verdict Execution time Memory Grader output
1 Correct 0 ms 332 KB Output is correct
2 Correct 1 ms 332 KB Output is correct
3 Correct 0 ms 332 KB Output is correct
4 Correct 0 ms 332 KB Output is correct
5 Correct 0 ms 316 KB Output is correct
6 Correct 1 ms 332 KB Output is correct
7 Correct 1 ms 332 KB Output is correct
8 Correct 1 ms 332 KB Output is correct
9 Correct 0 ms 332 KB Output is correct
10 Correct 1 ms 320 KB Output is correct
11 Correct 1 ms 332 KB Output is correct
12 Correct 1 ms 332 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 332 KB Output is correct
2 Correct 1 ms 332 KB Output is correct
3 Correct 0 ms 332 KB Output is correct
4 Correct 0 ms 332 KB Output is correct
5 Correct 0 ms 316 KB Output is correct
6 Correct 1 ms 332 KB Output is correct
7 Correct 1 ms 332 KB Output is correct
8 Correct 1 ms 332 KB Output is correct
9 Correct 0 ms 332 KB Output is correct
10 Correct 1 ms 320 KB Output is correct
11 Correct 1 ms 332 KB Output is correct
12 Correct 1 ms 332 KB Output is correct
13 Correct 1 ms 296 KB Output is correct
14 Correct 1 ms 324 KB Output is correct
15 Correct 2 ms 332 KB Output is correct
16 Correct 1 ms 460 KB Output is correct
17 Correct 1 ms 452 KB Output is correct
18 Correct 2 ms 588 KB Output is correct
19 Correct 1 ms 432 KB Output is correct
20 Correct 1 ms 460 KB Output is correct
21 Correct 2 ms 588 KB Output is correct
22 Correct 2 ms 588 KB Output is correct
23 Correct 5 ms 1228 KB Output is correct
24 Correct 6 ms 1280 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 332 KB Output is correct
2 Correct 1 ms 332 KB Output is correct
3 Correct 0 ms 332 KB Output is correct
4 Correct 0 ms 332 KB Output is correct
5 Correct 0 ms 316 KB Output is correct
6 Correct 1 ms 332 KB Output is correct
7 Correct 1 ms 332 KB Output is correct
8 Correct 1 ms 332 KB Output is correct
9 Correct 0 ms 332 KB Output is correct
10 Correct 1 ms 320 KB Output is correct
11 Correct 1 ms 332 KB Output is correct
12 Correct 1 ms 332 KB Output is correct
13 Correct 1 ms 296 KB Output is correct
14 Correct 1 ms 324 KB Output is correct
15 Correct 2 ms 332 KB Output is correct
16 Correct 1 ms 460 KB Output is correct
17 Correct 1 ms 452 KB Output is correct
18 Correct 2 ms 588 KB Output is correct
19 Correct 1 ms 432 KB Output is correct
20 Correct 1 ms 460 KB Output is correct
21 Correct 2 ms 588 KB Output is correct
22 Correct 2 ms 588 KB Output is correct
23 Correct 5 ms 1228 KB Output is correct
24 Correct 6 ms 1280 KB Output is correct
25 Correct 5 ms 1228 KB Output is correct
26 Correct 11 ms 2320 KB Output is correct
27 Correct 15 ms 2216 KB Output is correct
28 Correct 78 ms 9748 KB Output is correct
29 Correct 64 ms 10048 KB Output is correct
30 Correct 144 ms 20236 KB Output is correct
31 Correct 143 ms 19012 KB Output is correct
32 Correct 134 ms 19128 KB Output is correct
33 Correct 160 ms 18864 KB Output is correct
34 Correct 138 ms 18864 KB Output is correct
35 Correct 145 ms 19276 KB Output is correct
36 Correct 149 ms 19536 KB Output is correct