Submission #563885

# Submission time Handle Problem Language Result Execution time Memory
563885 2022-05-18T08:45:44 Z errorgorn Two Dishes (JOI19_dishes) C++17
65 / 100
10000 ms 228036 KB
#include <bits/stdc++.h>
using namespace std;

#define int long long
#define ii pair<int,int>
#define fi first
#define se second
#define endl '\n'

#define puf push_front
#define pof pop_front
#define pub push_back
#define pob pop_back
#define lb lower_bound
#define ub upper_bound

#define rep(x,s,e) for (int x=(s)-((s)>(e));x!=(e)-((s)>(e));((s)<(e)?x++:x--))
#define all(x) (x).begin(),(x).end()
#define sz(x) (int) (x).size()

mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());

const int INF=1e18;

int n,m;
int arr[2][1000005];
int brr[2][1000005];
int crr[2][1000005];
int drr[2][1000005];

struct node{
	int s,e,m;
	int val=0; //stores the max value
	int lazy=0;
	bool lazyt=false; //false = increment, true = set
	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);
		}
	}
	
	void propo(){
		if (lazyt){
			val=lazy;
			if (s!=e){
				l->lazy=r->lazy=lazy;
				l->lazyt=r->lazyt=true;
			}
		}
		else if (lazy){
			val+=lazy;
			if (s!=e){
				l->lazy+=lazy;
				r->lazy+=lazy;
			}
		}
		
		lazy=0;
		lazyt=false;
	}
	
	void update1(int i,int j,int k){
		propo();
		if (s==i && e==j) lazy+=k;
		else{
			if (j<=m) l->update1(i,j,k);
			else if (m<i) r->update1(i,j,k);
			else l->update1(i,m,k),r->update1(m+1,j,k);
			
			l->propo(),r->propo();
			val=max(l->val,r->val);
		}
	}
	
	void update2(int i,int j,int k){
		propo();
		if (s==i && e==j){
			lazy=k;
			lazyt=true;
		}
		else{
			if (j<=m) l->update2(i,j,k);
			else if (m<i) r->update2(i,j,k);
			else l->update2(i,m,k),r->update2(m+1,j,k);
			
			l->propo(),r->propo();
			val=max(l->val,r->val);
		}
	}
	
	int query(int i){
		propo();
		
		if (s==e) return val;
		else if (i<=m) return l->query(i);
		else return r->query(i);
	}
} *root=new node(0,1000005);

void expand(int i){
	int val=root->query(i);
	
	int lo=i,hi=1000006,mi;
	while (hi-lo>1){
		mi=hi+lo>>1;
		
		if (val<=root->query(mi)) hi=mi;
		else lo=mi;
	}
	if (lo!=i) root->update2(i+1,lo,val);
}

signed main(){
	cin.tie(0);
	cout.tie(0);
	cin.sync_with_stdio(false);
	
	cin>>n>>m;
	
	rep(x,1,n+1) cin>>arr[0][x]>>brr[0][x]>>crr[0][x];
	rep(x,1,m+1) cin>>arr[1][x]>>brr[1][x]>>crr[1][x];
	
	rep(x,1,n+1) arr[0][x]+=arr[0][x-1];
	rep(x,1,m+1) arr[1][x]+=arr[1][x-1];
	
	//rep(x,0,n+1) cout<<arr[0][x]<<" "; cout<<endl;
	rep(x,1,n+1) drr[0][x]=ub(arr[1],arr[1]+m+1,brr[0][x]-arr[0][x])-arr[1];
	rep(x,1,m+1) drr[1][x]=ub(arr[0],arr[0]+n+1,brr[1][x]-arr[1][x])-arr[0];
	
	//rep(x,1,n+1) cout<<drr[0][x]<<" "; cout<<endl;
	//rep(x,1,m+1) cout<<drr[1][x]<<" "; cout<<endl;
	
	vector<int> idx;
	rep(x,1,m+1) if (drr[1][x]) idx.pub(x);
	sort(all(idx),[](int i,int j){
		return drr[1][i]>drr[1][j];
	});
	
	rep(x,1,n+2){
		while (!idx.empty() && drr[1][idx.back()]==x){
			int u=idx.back(); idx.pob();
			root->update1(u,1000005,crr[1][u]);
			expand(u-1);
		}
		
		if (x!=n+1 && drr[0][x]){
			root->update1(0,drr[0][x]-1,crr[0][x]);
			expand(drr[0][x]-1);
		}
	}
	
	cout<<root->val<<endl;
}

Compilation message

dishes.cpp: In constructor 'node::node(long long int, long long int)':
dishes.cpp:39:16: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   39 |   s=_s,e=_e,m=s+e>>1;
      |               ~^~
dishes.cpp: In function 'void expand(long long int)':
dishes.cpp:110:8: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
  110 |   mi=hi+lo>>1;
      |      ~~^~~
# Verdict Execution time Memory Grader output
1 Correct 1251 ms 171640 KB Output is correct
2 Correct 1477 ms 171388 KB Output is correct
3 Correct 1512 ms 171532 KB Output is correct
4 Correct 929 ms 170380 KB Output is correct
5 Correct 105 ms 156876 KB Output is correct
6 Correct 1374 ms 171004 KB Output is correct
7 Correct 718 ms 165300 KB Output is correct
8 Correct 785 ms 163192 KB Output is correct
9 Correct 1510 ms 171588 KB Output is correct
10 Correct 1346 ms 171576 KB Output is correct
11 Correct 1453 ms 171712 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 104 ms 156912 KB Output is correct
2 Correct 110 ms 156928 KB Output is correct
3 Correct 107 ms 156872 KB Output is correct
4 Correct 107 ms 156876 KB Output is correct
5 Correct 113 ms 156928 KB Output is correct
6 Correct 106 ms 156916 KB Output is correct
7 Correct 113 ms 156900 KB Output is correct
8 Correct 109 ms 156848 KB Output is correct
9 Correct 104 ms 156856 KB Output is correct
10 Correct 112 ms 156900 KB Output is correct
11 Correct 107 ms 156836 KB Output is correct
12 Correct 107 ms 156836 KB Output is correct
13 Correct 107 ms 157004 KB Output is correct
14 Correct 105 ms 156880 KB Output is correct
15 Correct 106 ms 156900 KB Output is correct
16 Correct 106 ms 156876 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 104 ms 156912 KB Output is correct
2 Correct 110 ms 156928 KB Output is correct
3 Correct 107 ms 156872 KB Output is correct
4 Correct 107 ms 156876 KB Output is correct
5 Correct 113 ms 156928 KB Output is correct
6 Correct 106 ms 156916 KB Output is correct
7 Correct 113 ms 156900 KB Output is correct
8 Correct 109 ms 156848 KB Output is correct
9 Correct 104 ms 156856 KB Output is correct
10 Correct 112 ms 156900 KB Output is correct
11 Correct 107 ms 156836 KB Output is correct
12 Correct 107 ms 156836 KB Output is correct
13 Correct 107 ms 157004 KB Output is correct
14 Correct 105 ms 156880 KB Output is correct
15 Correct 106 ms 156900 KB Output is correct
16 Correct 106 ms 156876 KB Output is correct
17 Correct 116 ms 157136 KB Output is correct
18 Correct 120 ms 157032 KB Output is correct
19 Correct 125 ms 157172 KB Output is correct
20 Correct 131 ms 156984 KB Output is correct
21 Correct 120 ms 157080 KB Output is correct
22 Correct 127 ms 157052 KB Output is correct
23 Correct 133 ms 157004 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 104 ms 156912 KB Output is correct
2 Correct 110 ms 156928 KB Output is correct
3 Correct 107 ms 156872 KB Output is correct
4 Correct 107 ms 156876 KB Output is correct
5 Correct 113 ms 156928 KB Output is correct
6 Correct 106 ms 156916 KB Output is correct
7 Correct 113 ms 156900 KB Output is correct
8 Correct 109 ms 156848 KB Output is correct
9 Correct 104 ms 156856 KB Output is correct
10 Correct 112 ms 156900 KB Output is correct
11 Correct 107 ms 156836 KB Output is correct
12 Correct 107 ms 156836 KB Output is correct
13 Correct 107 ms 157004 KB Output is correct
14 Correct 105 ms 156880 KB Output is correct
15 Correct 106 ms 156900 KB Output is correct
16 Correct 106 ms 156876 KB Output is correct
17 Correct 116 ms 157136 KB Output is correct
18 Correct 120 ms 157032 KB Output is correct
19 Correct 125 ms 157172 KB Output is correct
20 Correct 131 ms 156984 KB Output is correct
21 Correct 120 ms 157080 KB Output is correct
22 Correct 127 ms 157052 KB Output is correct
23 Correct 133 ms 157004 KB Output is correct
24 Correct 1161 ms 170608 KB Output is correct
25 Correct 1162 ms 172936 KB Output is correct
26 Correct 1185 ms 171976 KB Output is correct
27 Correct 1199 ms 173064 KB Output is correct
28 Correct 2123 ms 172992 KB Output is correct
29 Correct 1488 ms 173068 KB Output is correct
30 Correct 4262 ms 173036 KB Output is correct
31 Correct 848 ms 166792 KB Output is correct
32 Correct 779 ms 164684 KB Output is correct
33 Correct 2255 ms 171936 KB Output is correct
34 Correct 3380 ms 172864 KB Output is correct
35 Correct 4243 ms 173036 KB Output is correct
36 Correct 4196 ms 172992 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 104 ms 156912 KB Output is correct
2 Correct 110 ms 156928 KB Output is correct
3 Correct 107 ms 156872 KB Output is correct
4 Correct 107 ms 156876 KB Output is correct
5 Correct 113 ms 156928 KB Output is correct
6 Correct 106 ms 156916 KB Output is correct
7 Correct 113 ms 156900 KB Output is correct
8 Correct 109 ms 156848 KB Output is correct
9 Correct 104 ms 156856 KB Output is correct
10 Correct 112 ms 156900 KB Output is correct
11 Correct 107 ms 156836 KB Output is correct
12 Correct 107 ms 156836 KB Output is correct
13 Correct 107 ms 157004 KB Output is correct
14 Correct 105 ms 156880 KB Output is correct
15 Correct 106 ms 156900 KB Output is correct
16 Correct 106 ms 156876 KB Output is correct
17 Correct 116 ms 157136 KB Output is correct
18 Correct 120 ms 157032 KB Output is correct
19 Correct 125 ms 157172 KB Output is correct
20 Correct 131 ms 156984 KB Output is correct
21 Correct 120 ms 157080 KB Output is correct
22 Correct 127 ms 157052 KB Output is correct
23 Correct 133 ms 157004 KB Output is correct
24 Correct 1161 ms 170608 KB Output is correct
25 Correct 1162 ms 172936 KB Output is correct
26 Correct 1185 ms 171976 KB Output is correct
27 Correct 1199 ms 173064 KB Output is correct
28 Correct 2123 ms 172992 KB Output is correct
29 Correct 1488 ms 173068 KB Output is correct
30 Correct 4262 ms 173036 KB Output is correct
31 Correct 848 ms 166792 KB Output is correct
32 Correct 779 ms 164684 KB Output is correct
33 Correct 2255 ms 171936 KB Output is correct
34 Correct 3380 ms 172864 KB Output is correct
35 Correct 4243 ms 173036 KB Output is correct
36 Correct 4196 ms 172992 KB Output is correct
37 Correct 1251 ms 171992 KB Output is correct
38 Correct 1221 ms 172996 KB Output is correct
39 Correct 1318 ms 173064 KB Output is correct
40 Correct 1550 ms 172992 KB Output is correct
41 Correct 105 ms 156936 KB Output is correct
42 Correct 4246 ms 172976 KB Output is correct
43 Correct 2245 ms 171776 KB Output is correct
44 Correct 3328 ms 172612 KB Output is correct
45 Correct 4270 ms 173104 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 104 ms 156912 KB Output is correct
2 Correct 110 ms 156928 KB Output is correct
3 Correct 107 ms 156872 KB Output is correct
4 Correct 107 ms 156876 KB Output is correct
5 Correct 113 ms 156928 KB Output is correct
6 Correct 106 ms 156916 KB Output is correct
7 Correct 113 ms 156900 KB Output is correct
8 Correct 109 ms 156848 KB Output is correct
9 Correct 104 ms 156856 KB Output is correct
10 Correct 112 ms 156900 KB Output is correct
11 Correct 107 ms 156836 KB Output is correct
12 Correct 107 ms 156836 KB Output is correct
13 Correct 107 ms 157004 KB Output is correct
14 Correct 105 ms 156880 KB Output is correct
15 Correct 106 ms 156900 KB Output is correct
16 Correct 106 ms 156876 KB Output is correct
17 Correct 116 ms 157136 KB Output is correct
18 Correct 120 ms 157032 KB Output is correct
19 Correct 125 ms 157172 KB Output is correct
20 Correct 131 ms 156984 KB Output is correct
21 Correct 120 ms 157080 KB Output is correct
22 Correct 127 ms 157052 KB Output is correct
23 Correct 133 ms 157004 KB Output is correct
24 Correct 1161 ms 170608 KB Output is correct
25 Correct 1162 ms 172936 KB Output is correct
26 Correct 1185 ms 171976 KB Output is correct
27 Correct 1199 ms 173064 KB Output is correct
28 Correct 2123 ms 172992 KB Output is correct
29 Correct 1488 ms 173068 KB Output is correct
30 Correct 4262 ms 173036 KB Output is correct
31 Correct 848 ms 166792 KB Output is correct
32 Correct 779 ms 164684 KB Output is correct
33 Correct 2255 ms 171936 KB Output is correct
34 Correct 3380 ms 172864 KB Output is correct
35 Correct 4243 ms 173036 KB Output is correct
36 Correct 4196 ms 172992 KB Output is correct
37 Correct 1251 ms 171992 KB Output is correct
38 Correct 1221 ms 172996 KB Output is correct
39 Correct 1318 ms 173064 KB Output is correct
40 Correct 1550 ms 172992 KB Output is correct
41 Correct 105 ms 156936 KB Output is correct
42 Correct 4246 ms 172976 KB Output is correct
43 Correct 2245 ms 171776 KB Output is correct
44 Correct 3328 ms 172612 KB Output is correct
45 Correct 4270 ms 173104 KB Output is correct
46 Correct 5379 ms 223896 KB Output is correct
47 Correct 4226 ms 228036 KB Output is correct
48 Correct 5762 ms 228024 KB Output is correct
49 Correct 6913 ms 227944 KB Output is correct
50 Execution timed out 10103 ms 227888 KB Time limit exceeded
51 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1251 ms 171640 KB Output is correct
2 Correct 1477 ms 171388 KB Output is correct
3 Correct 1512 ms 171532 KB Output is correct
4 Correct 929 ms 170380 KB Output is correct
5 Correct 105 ms 156876 KB Output is correct
6 Correct 1374 ms 171004 KB Output is correct
7 Correct 718 ms 165300 KB Output is correct
8 Correct 785 ms 163192 KB Output is correct
9 Correct 1510 ms 171588 KB Output is correct
10 Correct 1346 ms 171576 KB Output is correct
11 Correct 1453 ms 171712 KB Output is correct
12 Correct 104 ms 156912 KB Output is correct
13 Correct 110 ms 156928 KB Output is correct
14 Correct 107 ms 156872 KB Output is correct
15 Correct 107 ms 156876 KB Output is correct
16 Correct 113 ms 156928 KB Output is correct
17 Correct 106 ms 156916 KB Output is correct
18 Correct 113 ms 156900 KB Output is correct
19 Correct 109 ms 156848 KB Output is correct
20 Correct 104 ms 156856 KB Output is correct
21 Correct 112 ms 156900 KB Output is correct
22 Correct 107 ms 156836 KB Output is correct
23 Correct 107 ms 156836 KB Output is correct
24 Correct 107 ms 157004 KB Output is correct
25 Correct 105 ms 156880 KB Output is correct
26 Correct 106 ms 156900 KB Output is correct
27 Correct 106 ms 156876 KB Output is correct
28 Correct 116 ms 157136 KB Output is correct
29 Correct 120 ms 157032 KB Output is correct
30 Correct 125 ms 157172 KB Output is correct
31 Correct 131 ms 156984 KB Output is correct
32 Correct 120 ms 157080 KB Output is correct
33 Correct 127 ms 157052 KB Output is correct
34 Correct 133 ms 157004 KB Output is correct
35 Correct 1161 ms 170608 KB Output is correct
36 Correct 1162 ms 172936 KB Output is correct
37 Correct 1185 ms 171976 KB Output is correct
38 Correct 1199 ms 173064 KB Output is correct
39 Correct 2123 ms 172992 KB Output is correct
40 Correct 1488 ms 173068 KB Output is correct
41 Correct 4262 ms 173036 KB Output is correct
42 Correct 848 ms 166792 KB Output is correct
43 Correct 779 ms 164684 KB Output is correct
44 Correct 2255 ms 171936 KB Output is correct
45 Correct 3380 ms 172864 KB Output is correct
46 Correct 4243 ms 173036 KB Output is correct
47 Correct 4196 ms 172992 KB Output is correct
48 Correct 1251 ms 171992 KB Output is correct
49 Correct 1221 ms 172996 KB Output is correct
50 Correct 1318 ms 173064 KB Output is correct
51 Correct 1550 ms 172992 KB Output is correct
52 Correct 105 ms 156936 KB Output is correct
53 Correct 4246 ms 172976 KB Output is correct
54 Correct 2245 ms 171776 KB Output is correct
55 Correct 3328 ms 172612 KB Output is correct
56 Correct 4270 ms 173104 KB Output is correct
57 Incorrect 1208 ms 170812 KB Output isn't correct
58 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1251 ms 171640 KB Output is correct
2 Correct 1477 ms 171388 KB Output is correct
3 Correct 1512 ms 171532 KB Output is correct
4 Correct 929 ms 170380 KB Output is correct
5 Correct 105 ms 156876 KB Output is correct
6 Correct 1374 ms 171004 KB Output is correct
7 Correct 718 ms 165300 KB Output is correct
8 Correct 785 ms 163192 KB Output is correct
9 Correct 1510 ms 171588 KB Output is correct
10 Correct 1346 ms 171576 KB Output is correct
11 Correct 1453 ms 171712 KB Output is correct
12 Correct 104 ms 156912 KB Output is correct
13 Correct 110 ms 156928 KB Output is correct
14 Correct 107 ms 156872 KB Output is correct
15 Correct 107 ms 156876 KB Output is correct
16 Correct 113 ms 156928 KB Output is correct
17 Correct 106 ms 156916 KB Output is correct
18 Correct 113 ms 156900 KB Output is correct
19 Correct 109 ms 156848 KB Output is correct
20 Correct 104 ms 156856 KB Output is correct
21 Correct 112 ms 156900 KB Output is correct
22 Correct 107 ms 156836 KB Output is correct
23 Correct 107 ms 156836 KB Output is correct
24 Correct 107 ms 157004 KB Output is correct
25 Correct 105 ms 156880 KB Output is correct
26 Correct 106 ms 156900 KB Output is correct
27 Correct 106 ms 156876 KB Output is correct
28 Correct 116 ms 157136 KB Output is correct
29 Correct 120 ms 157032 KB Output is correct
30 Correct 125 ms 157172 KB Output is correct
31 Correct 131 ms 156984 KB Output is correct
32 Correct 120 ms 157080 KB Output is correct
33 Correct 127 ms 157052 KB Output is correct
34 Correct 133 ms 157004 KB Output is correct
35 Correct 1161 ms 170608 KB Output is correct
36 Correct 1162 ms 172936 KB Output is correct
37 Correct 1185 ms 171976 KB Output is correct
38 Correct 1199 ms 173064 KB Output is correct
39 Correct 2123 ms 172992 KB Output is correct
40 Correct 1488 ms 173068 KB Output is correct
41 Correct 4262 ms 173036 KB Output is correct
42 Correct 848 ms 166792 KB Output is correct
43 Correct 779 ms 164684 KB Output is correct
44 Correct 2255 ms 171936 KB Output is correct
45 Correct 3380 ms 172864 KB Output is correct
46 Correct 4243 ms 173036 KB Output is correct
47 Correct 4196 ms 172992 KB Output is correct
48 Correct 1251 ms 171992 KB Output is correct
49 Correct 1221 ms 172996 KB Output is correct
50 Correct 1318 ms 173064 KB Output is correct
51 Correct 1550 ms 172992 KB Output is correct
52 Correct 105 ms 156936 KB Output is correct
53 Correct 4246 ms 172976 KB Output is correct
54 Correct 2245 ms 171776 KB Output is correct
55 Correct 3328 ms 172612 KB Output is correct
56 Correct 4270 ms 173104 KB Output is correct
57 Correct 5379 ms 223896 KB Output is correct
58 Correct 4226 ms 228036 KB Output is correct
59 Correct 5762 ms 228024 KB Output is correct
60 Correct 6913 ms 227944 KB Output is correct
61 Execution timed out 10103 ms 227888 KB Time limit exceeded
62 Halted 0 ms 0 KB -